Due: Thursday, September 11 at 11:59 PM
Points: 100
Submission: Via GitHub (one per team)
During our first class, we built a simple Task API together. Your team's mission is to evolve this starter code into your own unique domain while making all provided tests pass.
- Teams of 3 students (one team may have 4)
- All members must contribute via GitHub commits
- Use AI tools to assist development
- Document your AI usage
Each team must pick a domain. Here are some sample ideas:
- BookmarkManager - Save and categorize web links
- QuoteKeeper - Store favorite quotes with authors
- HabitTracker - Track daily habits and streaks
- RecipeBox - Store cooking recipes with ingredients
- MovieWatchlist - Track movies to watch and ratings
Domains don't have to be unique between different teams.
- Implement all CRUD operations (Create, Read, Update, Delete)
- All 15 provided tests MUST pass
- Rename classes/endpoints to match your domain
- Add at least 3 meaningful fields beyond
id
- Bookmark: url, title, category, tags, favicon
- Quote: text, author, source, category, favorite
- Habit: name, frequency, currentStreak, lastCompleted, target
- Recipe: name, ingredients, instructions, prepTime, servings
- Movie: title, director, year, genre, rating, watched
Add this comment block to the top of your controller:
/**
* AI Collaboration Report:
* - AI Tool Used: [ChatGPT/Claude/Copilot/Gemini]
* - Most Helpful Prompt: [paste your best prompt]
* - AI Mistake We Fixed: [describe the error and fix]
* - Time Saved: [estimate hours]
* - Team Members: [list all names]
*/- Clean, readable code
- Proper package/class naming for your domain
- No major SonarCloud issues
- Meaningful commit messages
One team member:
# Fork on GitHub, then clone
git clone https://github.com/YOUR-TEAM/assignment-1-task-tracker.git
cd assignment-1-task-tracker./gradlew test
# All tests will fail initially - that's expected!./gradlew bootRun
# Visit http://localhost:8080/api/items- Rename
Itemto your domain object - Rename
ItemControllerto match - Implement all endpoints
- Make tests pass one by one
# Create an item
curl -X POST http://localhost:8080/api/items \
-H "Content-Type: application/json" \
-d '{"name":"Test","description":"Test item"}'
# Get all items
curl http://localhost:8080/api/items
# Get specific item
curl http://localhost:8080/api/items/1
# Update item
curl -X PUT http://localhost:8080/api/items/1 \
-H "Content-Type: application/json" \
-d '{"name":"Updated","description":"Updated item","completed":true}'
# Delete item
curl -X DELETE http://localhost:8080/api/items/1| Criteria | Points | Description |
|---|---|---|
| Tests Pass | 60 | All 15 tests must pass (4 points each) |
| Domain Customization | 20 | Proper domain modeling, not generic "Item" |
| Code Quality | 10 | Clean code, no major SonarCloud issues |
| AI Documentation | 10 | Thoughtful reflection on AI usage |
| Bonus: Search | +5 | Implement search functionality |
- Start with: "I need to implement a Spring Boot REST controller for [domain]"
- Be specific: "Add validation to ensure names are unique"
- Verify everything: AI often forgets error handling
- Test incrementally: Make one test pass at a time
- Don't forget to validate input (empty strings, nulls)
- Remember to handle 404s for missing items
- Duplicate names should return 409 Conflict
- IDs should be generated, not provided by client
# Create feature branch
git checkout -b feature/implement-create-endpoint
# Commit often
git add .
git commit -m "Implement POST endpoint for creating items"
# Push to GitHub
git push origin feature/implement-create-endpoint
# Create Pull Request on GitHub for team review- Ensure all tests pass:
./gradlew test - Push final code to main branch
- Submit GitHub repository link on Moodle
- Include team member names in submission
- Office hours: Wednesdays 1:30-3:00 PM
- Email: kkousen@trincoll.edu
- This is a TEAM assignment
- You may help other teams with concepts
- AI use is encouraged but must be documented
Good luck! Remember: the tests are your specification. Make them pass, and you succeed!