Skip to content

feat: new api route users/:id/projects#2000

Merged
3kh0 merged 4 commits intohackclub:mainfrom
cyteon:api-user-projects
Apr 1, 2026
Merged

feat: new api route users/:id/projects#2000
3kh0 merged 4 commits intohackclub:mainfrom
cyteon:api-user-projects

Conversation

@cyteon
Copy link
Copy Markdown
Member

@cyteon cyteon commented Mar 30, 2026

No description provided.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new API endpoint to list a given user’s projects (including support for user_id=me), aligning Rails routing, controller/view implementation, and the OpenAPI spec.

Changes:

  • Document GET /users/{user_id}/projects in docs/openapi.yml.
  • Add nested route GET /api/v1/users/:user_id/projects pointing to Api::V1::UserProjectsController#index.
  • Implement controller + Jbuilder response for paginated project listings.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
docs/openapi.yml Adds OpenAPI documentation for the new user-projects listing endpoint.
config/routes.rb Introduces nested users/:user_id/projects route to the new controller.
app/controllers/api/v1/user_projects_controller.rb Implements the index action, including me resolution and pagination.
app/views/api/v1/user_projects/index.jbuilder Defines JSON response shape for projects + pagination.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread app/controllers/api/v1/user_projects_controller.rb Outdated
Comment thread app/views/api/v1/user_projects/index.jbuilder Outdated
@3kh0 3kh0 added this pull request to the merge queue Apr 1, 2026
Merged via the queue into hackclub:main with commit ae21c78 Apr 1, 2026
7 checks passed
transcental added a commit that referenced this pull request Apr 7, 2026
* fix: add fulfiler to slack msg to user (#1997)

* fix: migrate shop_items w/o downtime

* fix: prevent duplicate column addition in shop_items migration

* quantative fulfilment stats (#2010)

* fix: clear cache button on superMegaDash not working (#2011)

* feat (dash): added HCB dashboard (#2013)

* feat (dash): added HCB dashboard

* lint

* chore(deps): bump aws-sdk-s3 from 1.217.1 to 1.218.0 (#2017)

Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.217.1 to 1.218.0.
- [Release notes](https://github.com/aws/aws-sdk-ruby/releases)
- [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-ruby/commits)

---
updated-dependencies:
- dependency-name: aws-sdk-s3
  dependency-version: 1.218.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* super partial it up (#2019)

* super partial it up

* lint

* chore(deps): bump ahoy_matey from 5.4.1 to 5.4.2 (#2018)

Bumps [ahoy_matey](https://github.com/ankane/ahoy) from 5.4.1 to 5.4.2.
- [Changelog](https://github.com/ankane/ahoy/blob/master/CHANGELOG.md)
- [Commits](ankane/ahoy@v5.4.1...v5.4.2)

---
updated-dependencies:
- dependency-name: ahoy_matey
  dependency-version: 5.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Super mega dash refactor (#2020)

* remove fulfillment disablement

* concern it up

* fix brakeman warning

* feat: improved project requirements: reworded messages and added tooltips (#1854)

the old version had the inverted sentence logic on the site, confusing
readers about what is required and what may be wrong

Co-authored-by: Echo <github@3kh0.net>

* feat: new api route `users/:id/projects` (#2000)

* api route: users/:id/projects

* partial it up

* move admin api over to its own home

---------

Co-authored-by: Echo <github@3kh0.net>

* fix up wonky d3 calls (#2022)

* fix rescue fulfillment dash (#2023)

* fix rescue

* fix references

* Make vote page responsive on mobile (#2024)

* Make vote page slightly more responsive on mobile

* Shop page suggestion image fix and small voting page fix

* remove debug line

* small fix

* fix super mega double borders (#2025)

* fix: correct numbers on super mega dash (#2028)

* fix: correct numbers on super mega dash

* fix: better colors

* fix: only include pending and not the awaiting verificaiton

* fix: default text for responses + stale cases,  if len <= 0

* fix: lint

* feat: a banner for a deadline countdown on the project page (#1994)

* feat: a banner for deadline countdown

* updated the banner to be simpler

* linting

* fix(project): restore previous subtitle for AI declaration (#2033)

Universal AI declaration needs a well thought out plan and this alone caused issues last time

* fix(ship): prevent posts with null postable_id when shipping (#2035)

* feat(devlog): bump devlog body limit to 4000 characters on popular demand

* fix(super-mega): exclude contractor payments from dollars per hour calc (#2039)

* Revert "feat: a banner for a deadline countdown on the project page (#1994)" (#2040)

This reverts commit a34c8ab.

* chore(deps): bump rack from 3.2.5 to 3.2.6 (#2041)

Bumps [rack](https://github.com/rack/rack) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md)
- [Commits](rack/rack@v3.2.5...v3.2.6)

---
updated-dependencies:
- dependency-name: rack
  dependency-version: 3.2.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat(voting): implement blessing & curses (#2046)

* feat(voting): implement blessing & curses

* chore(migration): stastify ci/cd

* feat(voting): papertrail vote_verdict

* fix(project): remove DISTINCT from excluding_shadow_banned to resolve Postgres ORDER BY error (#2042)

* Exclude shadow-banned projects from query

* ez fix

---------

Co-authored-by: Kartikey Chauhan <skartikey314@gmail.com>

* chore(secrets): update subproject commit reference to d6f5615b

* chore(secrets): update subproject commit reference to 6f2e1eb

* feat(voting): add skip functionality for projects

* chore(lint): run bin/lint + update secrets (#2049)

* feat(super-mega): add most common shop suggestions to fulfillment dash (#2043)

* feat(super-mega-dash): added qualitative statistics for the NPS using an AI summary (#2030)

* feat: added NPS vibalytics

* lint

* fix copilot comment 1 and 2

* lint

* fix copilot comment 3

* truncate redirect url

* increase readability

* feat(explore): added well-cooked filter for project gallery (#2048)

* filter by cooked in gallery

* remove new checkbox css

* edit params

* add to prev dropdown

---------

Co-authored-by: Cyteon <129582290+cyteon@users.noreply.github.com>

* feat(sidequests): add caffeinated side quest (#2051)

* Create Caffeinated Sidequest

* minor changes: fixed approved slack message

* Updated from website to project

* fix: trailing newline

* fix: compressed image

* removed old png

* include db

---------

Co-authored-by: Kartikey Chauhan <skartikey314@gmail.com>

* style(super-mega): remove unnecessary gradients & ensure consistency in padding (#2054)

* fix(css): streamline super-mega-dash UI

* fixy wixy

* lint

* fix(shop-suggestions): fix broken sync job (#2056)

* fix(voting): switch matchmaker threshold to payout_countable votes

Payouts were being blocked due to a mismatch in vote counting logic.
ShipEventPayoutCalculator uses `payout_countable`votes to determine payouts,
while the matchmaker stops recommending users after 12 `legitimate` votes.

This caused an issue where votes from cursed users (which are included in
`legitimate` but excluded in `payout_countable`) could prevent projects from
reaching the payout threshold.

* chore(deps): bump lockbox from 2.1.0 to 2.2.0 (#2067)

Bumps [lockbox](https://github.com/ankane/lockbox) from 2.1.0 to 2.2.0.
- [Changelog](https://github.com/ankane/lockbox/blob/master/CHANGELOG.md)
- [Commits](ankane/lockbox@v2.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: lockbox
  dependency-version: 2.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump blind_index from 2.7.0 to 2.8.0 (#2066)

Bumps [blind_index](https://github.com/ankane/blind_index) from 2.7.0 to 2.8.0.
- [Changelog](https://github.com/ankane/blind_index/blob/master/CHANGELOG.md)
- [Commits](ankane/blind_index@v2.7.0...v2.8.0)

---
updated-dependencies:
- dependency-name: blind_index
  dependency-version: 2.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(voting): fix typo "bleesed" to "blessed" (#2059)

* Fix typo in blessed Slack message header

* Fix typo in blessed Slack message header

* Fix typo in blessed message for payouts

* Fix typo in vote verdict banner message

* feat(super-dash): Alter Shipwrights section in SuperMegaDash (#2038)

* Add rejection reasons plus make their day

* lint

* fix json escape

* switch to `.to_json`

* fix: project generator issues (#2062)

* handle fallbacks

* use the correct model name

* feat(sidequest): add physics-lab sidequest (#2057)

* added physics lab!

* trail issue fix

* trail fix 2

* Update show_physics_lab.html.erb

* Add autocomplete attribute to gravity input

* Remove host from development configuration

* minor tweaks

---------

Co-authored-by: Anirudh Sahu <renudilip19@gmail.com>

* update: db annoations + migration

* feat(super-mega): added category-wise pie chart for HCB transactions (#2069)

* add pie chart

* fix no more js in .erb

* lint

* i am a css god

* update(shop_items): code changes to make select items refundable

* fix: code syntax err

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Kartikey Chauhan <me@cskartikey.dev>
Co-authored-by: Amber <amber@transcental.dev>
Co-authored-by: Daamin Ashai <ashai.daamin@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Echo <github@3kh0.net>
Co-authored-by: Johann Heuer <127251883+Vimthusiast@users.noreply.github.com>
Co-authored-by: Cyteon <129582290+cyteon@users.noreply.github.com>
Co-authored-by: Shreyas Deo <93237883+deoshreyas@users.noreply.github.com>
Co-authored-by: Obay M. Rashad <102649548+ObayM@users.noreply.github.com>
Co-authored-by: Kartikey Chauhan <skartikey314@gmail.com>
Co-authored-by: Aryan Rao <aryanscode@gmail.com>
Co-authored-by: Space <akaal@akaalroop.com>
Co-authored-by: Saleh <nullskulls@proton.me>
Co-authored-by: Carlson <dinosaur890123@gmail.com>
Co-authored-by: Anirudh Sahu <renudilip19@gmail.com>
daaminashai pushed a commit to daaminashai/flavortown that referenced this pull request Apr 10, 2026
* api route: users/:id/projects

* partial it up

* move admin api over to its own home

---------

Co-authored-by: Echo <github@3kh0.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants