Releases: bounswe/bounswe2024group1
0.9.0
Group 1 CMPE 451 2024 Fall Final Release
Final Release
Deployment
We use DigitalOcean's App Platform with the DigitalOcean Container Registry. We have a single registry that all images are pulled from. The app platform will automatically deploy the latest image from the registry when a push happens.
The deployment process is very simple. When following the sets, if two sets of commands are given, execute only the commands for the environment you're deploying to:
Prerequisites
Make sure your DigitalOcean CLI has been set up and you have logged in (doctl auth init
).
Authorize with the registry (only need to do once):
doctl registry login
Deploying the Application
Important
Note that you need to use docker compose
and NOT docker-compose
. Dashed version is the older version that uses Python and may have conflicts with your local Python environment. We also don't provide version
which may cause an error with the old Compose V1. For more details, please check the Docker documentation.
When you're going to deploy only the application (no changes to infrastructre), you can follow the steps below:
- Build images using the docker compose setup.
docker compose build
- Tag images for the registry.
# for prod
docker tag bounswe2024group1-451-web:latest registry.digitalocean.com/programming-languages-2/web:latest
docker tag bounswe2024group1-451-backend:latest registry.digitalocean.com/programming-languages-2/backend:latest
# for staging
docker tag bounswe2024group1-451-web:latest registry.digitalocean.com/programming-languages-2/web:staging
docker tag bounswe2024group1-451-backend:latest registry.digitalocean.com/programming-languages-2/backend:staging
- Push images to the registry.
# for prod
docker push registry.digitalocean.com/programming-languages-2/web:latest
docker push registry.digitalocean.com/programming-languages-2/backend:latest
# for staging
docker push registry.digitalocean.com/programming-languages-2/web:staging
docker push registry.digitalocean.com/programming-languages-2/backend:staging
This will trigger a deployment on the DigitalOcean backend.
- Make sure your deployment is successful by checking the logs.
Deploying the Infrastructure
GUI Changes
When you have made changes to the infrastructure, make sure you keep .do/app-{env}.yml
up to date. If you've used the GUI, pull spec changes using doctl
:
# for prod
doctl apps spec get <app-id> > .do/app-prod.yml
# for staging
doctl apps spec get <app-id> > .do/app-staging.yml
To get <app-id>
you can use doctl apps list
and find the app id for the environment you're deploying to.
App Spec Changes
When you've changed the app spec, you can use doctl apps update
to update the app. Make sure you've updated the spec file before running the command.
# for prod
doctl apps update --spec .do/app-prod.yml
# for staging
doctl apps update --spec .do/app-staging.yml
It is paramount that staging and prod are kept in sync. If you've made changes to the staging environment, make sure to update the prod environment as well.
What's Changed
- [Lab] Lab 8 by @mmtftr in #582
- Bugfix for questionCount. by @EnesBaserr in #597
- Get Questions and Answers for UserProfile by @EnesBaserr in #599
- [Frontend] Implement Code Block Popover by @mmtftr in #613
- [Frontend] Add difficulty filter to Tag Page by @mmtftr in #612
- [Frontend] Implement Question search by @mmtftr in #615
- [Frontend] Add Difficulty Level in Question Card by @mmtftr in #618
- [Devops] Add Frontend type checking to CI by @mmtftr in #616
- [Backend] Fix question DTO field by @mmtftr in #620
- [Frontend] Implement Difficulty Filter in the Question Search Page by @mmtftr in #621
- [Deploy] Deploy to Production by @mmtftr in #623
- Fix code exec. response by @EnesBaserr in #625
- Fix question related endpoints to retrieve difficulty level. by @EnesBaserr in #626
- Add followed tags to users' profile responses. by @EnesBaserr in #628
- Add Code Snippets to Question by @NazireAta in #632
- Add preview to question by @NazireAta in #634
- [BE] Feature/630 get bookmarked questions by @atakanyasar in #635
- Add rating for level of difficulty of a question by @EnesBaserr in #637
- [BE] Fix/638-bookmark by @atakanyasar in #639
- [Mobile] Bookmarked Questions Page and Bookmark Button on Questions by @atakanyasar in #640
- Implemented reputationPoints flow. by @EnesBaserr in #643
- Add Difficulty Rating to Questions by @NazireAta in #645
- [Frontend] Followed tags in profile by @mmtftr in #646
- [Deploy] Deploy to main by @mmtftr in #647
- Fix Accessibility Issues by @NazireAta in #648
- Lab-9 PR by @EnesBaserr in #654
- [Mobile] Home Page by @atakanyasar in #659
- [Mobile] Design Question Card by @atakanyasar in #664
- [Mobile] Filter Questions By Difficulty by @atakanyasar in #665
- [DevOps] Migrate DigitalOcean account by @mmtftr in #670
- [Deploy] Test deploy by @mmtftr in #671
- [FE] Implement Tag and Question References for Answer Creation by @asligook in #624
- [FE] Display Author Field in the Tag Page by @asligook in #669
- [Frontend] Folow/Unfollow Tags by @ozdentarikcan in #672
- [Frontend] Show Execution Time by @ozdentarikcan in #673
- [Frontend] Implement Bookmark button by @ozdentarikcan in #674
- fix(backend): fix incompatible question type returned from TagDetails by @mmtftr in #676
- Implement Question Edit by @NazireAta in #675
- [Backend] Fix Self Following Field in Tag Details by @mmtftr in #677
- [Deploy] Test deploy by @mmtftr in #678
- Added default profile picture by @NazireAta in #680
- Frontend/feature/fix tag badge routing by @NazireAta in #688
- [Backend] Fix follower count in Tags by @mmtftr in #682
- [Frontend] Implement Bookmark Page by @ozdentarikcan in #684
- [Mobile] Follow/Unfollow Tag by @atakanyasar in #668
- [Frontend] Show reputation points in profile page by @ozdentarikcan in #686
- 627 [BACKEND] GET users/{userid} should return answers, questions, and followed tags for that user by @Cgtycolak in #685
- [FE] Implement Glossary Page and Tag Type Pages by @asligook in #694
- [Frontend] Fix Bookmarks Page by @mmtftr in #696
- [Backend] Sort Questions by Followed Users by @ozdentarikcan in #691
- [Mobile] Profile Page by @atakanyasar in #695
- [Frontend] Use sr-only text by @ozdentarikcan in #692
- [Frontend] Add loading screen to TagType Page by @ozdentarikcan in #697
- [Frontend] Implement some UX improvements by @mmtftr in #698
- [Deploy] Test deploy by @mmtftr in #699
- [Mobile] Sort Recommended Order by @atakanyasar in #701
- [Hotfix] Fix some backend/frontend bugs by @mmtftr in #703
- Enhance New Question and New Answer Screens by @atakanyasar in #705
- Develop to Main by @atakanyasar in #702
Full Changelog: https://gi...
0.2.0-alpha
0.2.0-alpha Release
Description
In this release, we've focused on nailing down domain-specific features and basic functionality of our platform.
Please check the README.md for instructions on how to deploy and run the project.
Covered requirements
Authentication & Users
- 1.1.1: Registration functionality enhanced
- 1.1.4: Sign-in functionality improved
- 1.2.4.1: Follow/unfollow users implemented
- 1.3.4: Profile search functionality added
Questions & Answers
- 1.6.1: Question creation with title, description, difficulty level
- 1.6.2: Question deletion implemented
- 1.6.3.1: Question upvoting/downvoting functionality
- 1.6.3.3: Answer creation with formatted text
- 1.6.4: Answer upvoting/downvoting system
- 1.6.6: Code execution service for supported languages
Tags & Search
- 1.3.1-1.3.3: Search functionality for tags, questions, and users
- 1.5.2-1.5.5: Tag types implemented (Programming Language, Software Library, Computer Science Term)
- 1.5.6: Tag creation functionality
- 1.5.8: Follow/unfollow tags feature
Feed & Content Management
- 1.4.1-1.4.4: Feed implementation with filtering
- 1.4.4.3: Bookmark questions feature
- 1.6.3: Question updates and modifications
System Requirements
- 2.1.1: Wikidata API integration for tag data
- 2.1.2: Tag photo retrieval from Wikimedia
- 2.5.2-2.5.4: Input validation for tags, questions, and answers
What's Changed
- Backend/feature/437 create tag entity by @EnesBaserr in #440
- Question entity. by @EnesBaserr in #441
- Answer Entity Created. by @EnesBaserr in #442
- [BE] feat(backend): implement code execution service by @atakanyasar in #443
- Implemented POST question upvote functionality. by @EnesBaserr in #450
- Backend/feature/449 implement POST question Downvote by @EnesBaserr in #451
- Backend/feature/444 Create SPARQL Queries by @NazireAta in #445
- Backend Wikidata Service Impl by @EnesBaserr in #458
- GET tags/{tagId} endpoint by @EnesBaserr in #459
- Create Queries for Software Library and Computer Science Term by @NazireAta in #463
- Implement POST /questions by @EnesBaserr in #464
- Implement POST /questions/{questionId}/bookmark by @EnesBaserr in #466
- Implement POST /tags. Create new tag . by @EnesBaserr in #468
- Implement DELETE upvote and downvote endpoints by @Cgtycolak in #471
- [Mobile] Question Page & Tag Page by @mmtftr in #473
- Lab 5: PR by @mmtftr in #475
- [Lab] Lab 6 PR by @mmtftr in #498
- Implement POST answer/{answerId}/upvote and answer/{answerId}/downvote by @atakanyasar in #509
- Implement DELETE bookmark question endpoint by @Cgtycolak in #474
- Merge Develop to Main by @atakanyasar in #510
- feat(moble): implement question creation screen by @atakanyasar in #518
- [Deploy] Re-Attempt Deployment by @mmtftr in #522
- [Lab] Lab 7 PR by @mmtftr in #513
- Search Tag Endpoint implemented. by @EnesBaserr in #530
- Create answer endpoint implemented. by @EnesBaserr in #531
- Get Question Detail endpoint implemented. by @EnesBaserr in #534
- Delete Answer endpoint implemented. by @EnesBaserr in #535
- Update an answer endpoint implemented. by @EnesBaserr in #536
- Delete a question endpoint implemented. by @EnesBaserr in #542
- Update a question endpoint implemented. by @EnesBaserr in #543
- 404 Not found error fixed. by @EnesBaserr in #544
- [FE/Mobile] Synchronize API schema by @mmtftr in #545
- [Mobile] Create Profile Page by @mmtftr in #549
- Mobile Question Creation Screen by @atakanyasar in #550
- Cascading Dele operations is removed from Question entity. by @EnesBaserr in #556
- Double upvote and downvote operation is blocked. by @EnesBaserr in #557
- Get answers for a question endpoint & service implemented. by @EnesBaserr in #558
- Implement User Search Endpoint by @Cgtycolak in #552
- [Frontend] Added Exercism Recommendations Integration by @mmtftr in #560
- [FE] Implement Answer Create Form by @mmtftr in #562
- Implement Question Search Endpoint by @Cgtycolak in #555
- Implement User Get Followings Endpoint by @Cgtycolak in #554
- [Deploy] Deploy to production by @mmtftr in #563
- [Deploy] Test deployment by @mmtftr in #564
- [Deploy] Test deployment by @mmtftr in #565
- feat(backend): users can follow/unfollow tags by @atakanyasar in #566
- feat(backend): add selfVoted for question and answers by @atakanyasar in #567
- [FE] Implement Tag Create by @asligook in #568
- Added Question Creation Page Structure by @NazireAta in #553
- [Mobile] Create Answer Page by @atakanyasar in #569
- [Deploy] Test deploy by @mmtftr in #570
- [FE] Implement Feed Page by @asligook in #572
- [Deploy] Test deploy by @mmtftr in #573
New Contributors
- @Cgtycolak made their first contribution in #471
Full Changelog: customer-milestone-1...customer-milestone-2
0.1.0-alpha
v0.1.0-alpha
Pre-Release
These are the pre-release notes for the Customer Milestone 1 pre-release.
Covered requirements
- 1.1.1 Registration
- 1.1.4. Sign In
- 1.1.3 Personal Information
- 1.2.1 Profile Page Basics
- 1.2.3. Profile Page Content Listing
- 1.3.2 Tag Search
- 1.5 Tag Page > Basics & Question Listing
- 1.6 Question Page > Interaction with Questions & Interaction with Answers & Content & Code Snippets
Production URL
https://programming-languages-forum-ahwzj.ondigitalocean.app/
Merged pull requests
- chore: move old project to archive/ by @mmtftr in #318
- Create issue templates by @atakanyasar in #333
- feat: create frontend with updated packages by @mmtftr in #354
- Setup local dev environment by @mmtftr in #356
- Set Up Backend by @atakanyasar in #360
- Merge develop by @mmtftr in #358
- Create Answer & Question Card by @mmtftr in #372
- chore(deps): bump braces from 3.0.2 to 3.0.3 in /frontend by @dependabot in #376
- Implement continuous deployment by @mmtftr in #374
- Create API schema and update frontend API code by @mmtftr in #377
- Initialize mobile with best practices by @mmtftr in #379
- Feature/380 implement security filters custom jwt filter for authentication by @EnesBaserr in #381
- Feature/383 custom security filter jwt implementation by @EnesBaserr in #384
- Implemented generic request & response DTOs for authentication. by @EnesBaserr in #388
- Implement signup flow. by @EnesBaserr in #389
- Implemented signin flow. by @EnesBaserr in #390
- feat: set up continuous deploy for mobile by @mmtftr in #382
- Implemented user/me endpoint & also catching some exceptions thrown by secutiy by @EnesBaserr in #392
- Create Question Page by @mmtftr in #394
- implemented signup and login pages and their tests, but signup couldn… by @NazireAta in #393
- Implemented users/{userId} GET endpoint by @EnesBaserr in #399
- Implemented users/{userId} PUT endpoint by @EnesBaserr in #400
- Implemented users/{userId}/follow POST endpoint by @EnesBaserr in #401
- Implemented users/{userId}/unfollow DELETE endpoint by @EnesBaserr in #402
- [FE] Implement Answer View by @mmtftr in #403
- Fix/404 fix backend ci by @atakanyasar in #405
- [FE] Implement Code Snippets by @mmtftr in #406
- [BE] Feature/408 get followers by @atakanyasar in #410
- [FE] Implement Tag Search by @mmtftr in #409
- [Mobile] Login/Signup by @mmtftr in #411
- Frontend/feature/364 implement profile page by @NazireAta in #412
- [Mobile] Search Page by @mmtftr in #413
- hot fix by @mmtftr in #415
- [FE] Implement Tag Page by @asligook in #419
- [Release] Do a test deploy by @mmtftr in #416
- [Release] Do another test release by @mmtftr in #424
- [Devops] Shortened Backend Tests CI output by @mmtftr in #426
- [BE] Feature/425 self following by @atakanyasar in #431
- [Release] Pre-release by @mmtftr in #432
New Contributors
- @dependabot made their first contribution in #376
- @asligook made their first contribution in #419
Full Changelog: Group1-Practice-App-Release-v0.2...customer-milestone-1
Final Customer Release v0.2
Production: https://semantic-cuisine-wh4f2.ondigitalocean.app/
Staging: https://semantic-cuisine-staging-t3m52.ondigitalocean.app/
Android application is attached
What's Changed
- chore(devops): improve development compose, add more docs by @mmtftr in #122
- fix(frontend): fix hanging tests by switching to happy-dom by @mmtftr in #129
- JWT token & Security Filter chain flow fixed for secured api routes. by @EnesBaserr in #134
- users/me endpoint implemented. by @EnesBaserr in #135
- feature(frontend): add codegen to the frontend by @mmtftr in #137
- Frontend/feature/130 add icons by @mmtftr in #142
- feature(frontend): add react-hook-form to login and signup forms by @mmtftr in #144
- Request matchers defined explicitly . by @EnesBaserr in #140
- Entity classes are created & mappings between those entities handled by @EnesBaserr in #145
- Update OpenAPI spec to v1.0.3 with new endpoints and changes by @mmtftr in #143
- Implement storage mechanism wikidata by @EnesBaserr in #158
- Implemented /cuisines/{cuisineId} endpoint by @EnesBaserr in #160
- Implemented search/users endpoint by @EnesBaserr in #162
- /users/follow endpoint implemented. by @EnesBaserr in #164
- /users/unfollow endpoint implemented. by @EnesBaserr in #166
- /follow & /unfollow endpoints now take Path variable (userId) by @EnesBaserr in #168
- "/{userId}/following" endpoint implemented. by @EnesBaserr in #170
- "/{userId}/followers" endpoint implemented. by @EnesBaserr in #172
- POST "/recipes" endpoint implemented. by @EnesBaserr in #181
- DELETE "/recipes" endpoint implemented. by @EnesBaserr in #183
- Implemented POST "recipes/{recipe_id} rating endpoint by @EnesBaserr in #185
- Devops/feature/119 backend GitHub actions by @atakanyasar in #132
- POST "/recipes/{recipeId}/bookmarks" endpoint implemented by @atakanyasar in #186
- GET /recipes/{recipeId}/bookmarks endpoint implemented by @atakanyasar in #187
- add frontend github actions by @boraykasap in #189
- Backend/feature/175 get comments endpoint by @boraykasap in #188
- Implemented GET /recipes endpoint . by @EnesBaserr in #194
- GET /recipes/{recieId} endpoint implemented. by @EnesBaserr in #198
- GET /feed endpoint implemented by @EnesBaserr in #200
- GET users/{userId} endpoint implemented. by @EnesBaserr in #202
- GET cuisines/{cuisineId} reimplemented by @EnesBaserr in #204
- Formatting responses for /search (dishes) by @EnesBaserr in #207
- feat(backend): adjust query to search other fields by @mmtftr in #214
- Format response /cuisines/{cuisine id} (Get cuisine details) by @EnesBaserr in #220
- Format GET /users/{userId} response reimplemented. by @EnesBaserr in #222
- Format GET /users/{userId}/following response by @EnesBaserr in #224
- Format GET /users/{userI}/followers response by @EnesBaserr in #226
- Format GET /users/follow and /users/unfollow response. by @EnesBaserr in #228
- Format GET /search/users response. by @EnesBaserr in #230
- Format response for /feed . by @EnesBaserr in #232
- chore(devops): remove redundant trigger by @mmtftr in #216
- Implement Recipe Card and Feed Page by @NazireAta in #196
- feat(frontend): create filter label by @mmtftr in #235
- feat(frontend): add search filter component by @mmtftr in #238
- fix(frontend): linting errors by @mmtftr in #239
- Comments section updated by @NazireAta in #241
- Added comment and comments page by @NazireAta in #240
- Frontend/feature/151 recipe page by @mmtftr in #244
- Format response for /follow /unfollow endpoints (isFollowing field) by @EnesBaserr in #246
- feat(devops): add mock s3 service by @mmtftr in #248
- Backend/feature/243 recipe user rating by @atakanyasar in #245
- Frontend/feature/154 my profile by @mmtftr in #249
- feat(frontend): handle errors and show toast by @mmtftr in #252
- Backend/feature/233 search controller unit tests by @boraykasap in #253
- Backend/feature/255 feed unit test by @boraykasap in #257
- feat(backend): detailed my profile page by @atakanyasar in #251
- feat(backend): add amount of ingredients by @atakanyasar in #265
- Frontend/feature/157 create recipe by @mmtftr in #266
- Frontend/feature/268 profile component by @NazireAta in #269
- Frontend/feature/218 bookmarks page by @NazireAta in #256
- feat(frontend): add favicon, make homepage=feed by @mmtftr in #270
- add user controller unit tests by @boraykasap in #263
- Frontend/feature/273 bookmarkers by @NazireAta in #275
- Frontend/feature/276 follow button by @mmtftr in #277
- feat(frontend): implement bookmark functionality by @mmtftr in #279
- Backend/feature/126 delete bookmark by @atakanyasar in #259
- fix(frontend): remove unused dep, incorrect check (Quick fix) by @mmtftr in #280
- Backend/feature/271 refactor recipe by @atakanyasar in #272
- Backend/feature/271 refactor recipe by @atakanyasar in #282
- fix(frontend): add more authentication checks by @mmtftr in #281
- Format responses for POST /comment by @EnesBaserr in #286
- Frontend/feature/289 add comment component by @NazireAta in #291
- fix(backend): make dishes nullable by @atakanyasar in #288
- feat(frontend): implement plus recipe button by @mmtftr in #292
- Backend/feature/294 get dish by @atakanyasar in #295
- Format response for post /recipes/{recipe id}/comments/{comment id}/upvote endpoint by @EnesBaserr in #297
- feat(backend): update profile details by @atakanyasar in #303
- fix: quick fix by @mmtftr in #305
- implemented design for bookmarks page by @YigitMemceroktay in #299
- Mobile/feature/211 navigation by @YigitMemceroktay in #300
- Mobile/feature/298 search by @YigitMemceroktay in #304
- Frontend/Feature Dish page and minor fixes by @mmtftr in #306
- fix(frontend): incorrect usage of auth store by @mmtftr in #308
- v0.2-beta staging release by @mmtftr in #309
- feat(backend): test dish controller by @at...