Feat/income creation page#11
Merged
Merged
Conversation
…ribute from IncomeCategory model
…er to differenciate customized and system in built categories
…tracker into feat/frontend/income-crud
colombefioren
requested review from
Mathieu-bot,
TsioryJonathan and
harena-mihaja
August 24, 2025 13:16
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Collaborator
Author
|
The UI has a little problem, maybe it's overflowing |
Collaborator
Author
|
Just wanted to note that this is NOT the final UI, it’s just a temporary implementation for functionality. (Talking bout Income related components) |
TsioryJonathan
approved these changes
Aug 24, 2025
Mathieu-bot
added a commit
that referenced
this pull request
Aug 24, 2025
commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components
TsioryJonathan
pushed a commit
that referenced
this pull request
Aug 26, 2025
* chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * Update .gitignore * refactor(server): move auth DB logic to service layer; keep controllers thin * feat(auth): add email and password strength validation - Add `validator` package to dependencies. - Replace regex-based email validation with `validator.js` `isEmail`. - Add password strength validation in the signup controller using `isStrongPassword` to enforce at least 6 characters, one uppercase letter, and one number. * refactor(auth): extract validation logic into middleware - Create a new [validate.js] middleware to centralize validation logic. - Implement [requireFields], [validateEmail], [sanitizeBody], and [validateTextMaxLengths] as reusable middleware functions. - Create combined middlewares `validateSignup` and `validateLogin` to simplify route definitions. - Update auth routes to use the new validation middlewares. - Simplify the `auth.controller` by removing validation logic now handled by the middleware, keeping only the password strength check. - Introduce custom error classes in utils/errors.js for better HTTP error handling.
TsioryJonathan
pushed a commit
that referenced
this pull request
Aug 27, 2025
* chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * feat(server): add category CRUD operations * chore(server): update .gitignore * chore(server): update server dependencies * feat(server): configure server bootstrap * docs(server): update OpenAPI spec by removing duplication * refactor(category): case-insensitive uniqueness + middlewares create/update Enforce case-insensitive name uniqueness in service (create/update). Use HttpError subclasses (Conflict/NotFound). Add validateCategoryCreate and validateCategoryUpdate with URL checks (protocol, max 255). Wire in routes and simplify controller.
TsioryJonathan
pushed a commit
that referenced
this pull request
Aug 31, 2025
* chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * feat(server): add category CRUD operations * chore(server): update .gitignore * chore(server): update server dependencies * feat(server): configure server bootstrap * docs(server): update OpenAPI spec by removing duplication * Update .gitignore * refactor(server): move auth DB logic to service layer; keep controllers thin * feat(auth): add email and password strength validation - Add `validator` package to dependencies. - Replace regex-based email validation with `validator.js` `isEmail`. - Add password strength validation in the signup controller using `isStrongPassword` to enforce at least 6 characters, one uppercase letter, and one number. * refactor(auth): extract validation logic into middleware - Create a new [validate.js] middleware to centralize validation logic. - Implement [requireFields], [validateEmail], [sanitizeBody], and [validateTextMaxLengths] as reusable middleware functions. - Create combined middlewares `validateSignup` and `validateLogin` to simplify route definitions. - Update auth routes to use the new validation middlewares. - Simplify the `auth.controller` by removing validation logic now handled by the middleware, keeping only the password strength check. - Introduce custom error classes in utils/errors.js for better HTTP error handling. * refactor(category): case-insensitive uniqueness + middlewares create/update Enforce case-insensitive name uniqueness in service (create/update). Use HttpError subclasses (Conflict/NotFound). Add validateCategoryCreate and validateCategoryUpdate with URL checks (protocol, max 255). Wire in routes and simplify controller. * refactor: remove useless import * chore: remove fake middleware and activate helmet * chore: import api/config * chore: use location hooks for the location * style: Update index.css with slide animation * chore(server): Update docs * chore(client): regenerate SDK * feat: add LogoutButton and use it in the sidebar * feat(auth): add RequireAuth component for protected routes * feat(auth): add useAuth hooks * feat(auth): add auth pages (LoginPage, SignupPage) * feat(client): add auth components like LoginForm, SignupForm ... * Squashed commit of the following: commit 1b8d6b30501407a1c6574465ae9932d53f3ae08c Author: Matieu <hei.tafita.2@gmail.com> Date: Thu Aug 28 00:24:35 2025 +0300 chore: downgrade App.tsx and Header.tsx to fix deployment issue commit d4a3a00 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:19:58 2025 +0300 chore: add some dependences commit 9a63d38 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:17:00 2025 +0300 feat(server/auth): add google oauth service - use google given_name as default username commit 2f01f66 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:39 2025 +0300 docs(server): Update with all google oauth variables commit 23055b2 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:08 2025 +0300 chore(server/routes): wire Google OAuth routes commit 783785c Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:56 2025 +0300 chore(server): configure global fetch via utils/network and prefer IPv4 commit 80ff59d Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:44 2025 +0300 refactor(server/auth): add google auth controller commit c8cf940 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:59 2025 +0300 feat(server/auth): introduce Google OAuth service (build URL, exchange code, fetch profile) commit b909074 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:53 2025 +0300 feat(server/utils): add http timeout helper and network (IPv4/proxy) config * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * Feat/post signup (#29) * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * fix: fix @typescript-eslint/no-unused-vars
Mathieu-bot
added a commit
that referenced
this pull request
Aug 31, 2025
* remove: prisma output custom path * Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> * Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> * chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * feat(server): add category CRUD operations * chore(server): update .gitignore * chore(server): update server dependencies * feat(server): configure server bootstrap * docs(server): update OpenAPI spec by removing duplication * Update .gitignore * refactor(server): move auth DB logic to service layer; keep controllers thin * feat(auth): add email and password strength validation - Add `validator` package to dependencies. - Replace regex-based email validation with `validator.js` `isEmail`. - Add password strength validation in the signup controller using `isStrongPassword` to enforce at least 6 characters, one uppercase letter, and one number. * refactor(auth): extract validation logic into middleware - Create a new [validate.js] middleware to centralize validation logic. - Implement [requireFields], [validateEmail], [sanitizeBody], and [validateTextMaxLengths] as reusable middleware functions. - Create combined middlewares `validateSignup` and `validateLogin` to simplify route definitions. - Update auth routes to use the new validation middlewares. - Simplify the `auth.controller` by removing validation logic now handled by the middleware, keeping only the password strength check. - Introduce custom error classes in utils/errors.js for better HTTP error handling. * refactor(category): case-insensitive uniqueness + middlewares create/update Enforce case-insensitive name uniqueness in service (create/update). Use HttpError subclasses (Conflict/NotFound). Add validateCategoryCreate and validateCategoryUpdate with URL checks (protocol, max 255). Wire in routes and simplify controller. * fix(api): clean up OpenAPI specification duplicates and errors * Feat/layout polish (#15) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing * feat: zustand * feat: mascot gifs * feat: add Mascot type and store * feat: mascot component with transitions * feat: mascot hooks for expression control * refactor: update toast ui to trigger mascot expressions * feat: mascot triggers to income service * fix: prevent duplicate error toast * fix: mascot frame swift transitions * style: beautify client icon portion * feat(ui): redesign Header with new subcomponents * chore: rename Header to dashboardHeader to maintain import consistency * style: use pennypal accent color * fix: notification number position * style: remove profile pic square border * style(sidebar): implement vertical curved sidebar * style: increase sidebar vertical padding * remove: delete bad resolution mascot gifs * feat: enhance header with adaptive glassmorphism effect on scroll --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> * Feat/auth (#14) * chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * Update .gitignore * refactor(server): move auth DB logic to service layer; keep controllers thin * feat(auth): add email and password strength validation - Add `validator` package to dependencies. - Replace regex-based email validation with `validator.js` `isEmail`. - Add password strength validation in the signup controller using `isStrongPassword` to enforce at least 6 characters, one uppercase letter, and one number. * refactor(auth): extract validation logic into middleware - Create a new [validate.js] middleware to centralize validation logic. - Implement [requireFields], [validateEmail], [sanitizeBody], and [validateTextMaxLengths] as reusable middleware functions. - Create combined middlewares `validateSignup` and `validateLogin` to simplify route definitions. - Update auth routes to use the new validation middlewares. - Simplify the `auth.controller` by removing validation logic now handled by the middleware, keeping only the password strength check. - Introduce custom error classes in utils/errors.js for better HTTP error handling. * Feat/category (#16) * chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * feat(server): add category CRUD operations * chore(server): update .gitignore * chore(server): update server dependencies * feat(server): configure server bootstrap * docs(server): update OpenAPI spec by removing duplication * refactor(category): case-insensitive uniqueness + middlewares create/update Enforce case-insensitive name uniqueness in service (create/update). Use HttpError subclasses (Conflict/NotFound). Add validateCategoryCreate and validateCategoryUpdate with URL checks (protocol, max 255). Wire in routes and simplify controller. * Feat/income auth (#23) * style: use datepicker instead of date textfield * refactor: fix prisma models to match openapi spec * refactor: remove unnecessary endpoints (income categories) * refactor: remove income category from service layer * refactor: update to use new field names (id) * refactor: remove category references * refactor: simplify income routes by removing category endpoints * refactor: remove income category from types * refactor: remove income category methods from services * refactor: remove category field and set default date (because of the date required in backend) * refactor: remove category display from incomelist * feat: make 1 to be the least amount when creating an income * refactor: add a dash for when source is empty * feat: required true to textfield source * refactor: make the default amount to be 1 instead of 0 * Refactor/income logic (#20) * refactor: fix prisma models to match openapi spec * refactor: remove unnecessary endpoints (income categories) * refactor: remove income category from service layer * refactor: update to use new field names (id) * refactor: remove category references * refactor: simplify income routes by removing category endpoints * refactor: remove income category from types * refactor: remove income category methods from services * refactor: remove category field and set default date (because of the date required in backend) * refactor: remove category display from incomelist * feat: make 1 to be the least amount when creating an income * refactor: add a dash for when source is empty * feat: required true to textfield source * refactor: make the default amount to be 1 instead of 0 * feat: auth middleware before granting the autorisation to fetch incomes * fix: updated password field to be hashed_password * refactor: prisma models attributes to follow the precendent ones * fix: enable CORS with credentials for frontend and feat cookieparser for testing * feat: axios options with withCredentials true to allow cookie storage in front * fix: name mismatch by turning createdAt to creation_date * fix: made source field unrequired when users are creating an income * fix(client): prevent duplicate query parameters in generated request * feat: enhance input validation in server * feat: implement frontend value validation and improve error display * refactor: remove useless import * chore: remove fake middleware and activate helmet * feat: simple expense crud (#26) * feat(api): add expense service * feat(api): add expense controller, expense route and expense validator * fix: add expense route to the main server file * fix(api): add express-validator dependency and fix minor bug * Feat/profile (#25) * style: use datepicker instead of date textfield * refactor: fix prisma models to match openapi spec * refactor: remove unnecessary endpoints (income categories) * refactor: remove income category from service layer * refactor: update to use new field names (id) * refactor: remove category references * refactor: simplify income routes by removing category endpoints * refactor: remove income category from types * refactor: remove income category methods from services * refactor: remove category field and set default date (because of the date required in backend) * refactor: remove category display from incomelist * feat: make 1 to be the least amount when creating an income * refactor: add a dash for when source is empty * feat: required true to textfield source * refactor: make the default amount to be 1 instead of 0 * Refactor/income logic (#20) * refactor: fix prisma models to match openapi spec * refactor: remove unnecessary endpoints (income categories) * refactor: remove income category from service layer * refactor: update to use new field names (id) * refactor: remove category references * refactor: simplify income routes by removing category endpoints * refactor: remove income category from types * refactor: remove income category methods from services * refactor: remove category field and set default date (because of the date required in backend) * refactor: remove category display from incomelist * feat: make 1 to be the least amount when creating an income * refactor: add a dash for when source is empty * feat: required true to textfield source * refactor: make the default amount to be 1 instead of 0 * feat: auth middleware before granting the autorisation to fetch incomes * fix: updated password field to be hashed_password * refactor: prisma models attributes to follow the precendent ones * fix: enable CORS with credentials for frontend and feat cookieparser for testing * feat: axios options with withCredentials true to allow cookie storage in front * fix: name mismatch by turning createdAt to creation_date * fix: made source field unrequired when users are creating an income * fix(client): prevent duplicate query parameters in generated request * feat: enhance input validation in server * feat: implement frontend value validation and improve error display * feat: add user profile update and password change service functions * feat: create user profile controller with get, update, and password change endpoints * feat: add user profile routes with consistent validation pattern * feat: user profile route in main app * feat: user service and add user profile methods to defaultservice via addition of new needed paths in the spec * feat: confirmPassword attribute in the change password request type * feat: user profile hook * feat(frontend): implement user profile management * remove: unnecessary ui component spinner * feat: user sotre in zustand * refactor: update dashboard header to use user store * refactor: update profile page to use zustand user store * style: fix profile page padding * refactor: better error display when users arent logged in * refactor: allow users to provide empty first and last name --------- Co-authored-by: Tafita Mathieu <hei.tafita.2@gmail.com> * chore: import api/config * chore: use location hooks for the location * style: Update index.css with slide animation * chore(server): Update docs * chore(client): regenerate SDK * feat: add LogoutButton and use it in the sidebar * feat(auth): add RequireAuth component for protected routes * feat(auth): add useAuth hooks * feat(auth): add auth pages (LoginPage, SignupPage) * feat(client): add auth components like LoginForm, SignupForm ... * Squashed commit of the following: commit 1b8d6b30501407a1c6574465ae9932d53f3ae08c Author: Matieu <hei.tafita.2@gmail.com> Date: Thu Aug 28 00:24:35 2025 +0300 chore: downgrade App.tsx and Header.tsx to fix deployment issue commit d4a3a00 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:19:58 2025 +0300 chore: add some dependences commit 9a63d38 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:17:00 2025 +0300 feat(server/auth): add google oauth service - use google given_name as default username commit 2f01f66 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:39 2025 +0300 docs(server): Update with all google oauth variables commit 23055b2 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:08 2025 +0300 chore(server/routes): wire Google OAuth routes commit 783785c Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:56 2025 +0300 chore(server): configure global fetch via utils/network and prefer IPv4 commit 80ff59d Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:44 2025 +0300 refactor(server/auth): add google auth controller commit c8cf940 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:59 2025 +0300 feat(server/auth): introduce Google OAuth service (build URL, exchange code, fetch profile) commit b909074 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:53 2025 +0300 feat(server/utils): add http timeout helper and network (IPv4/proxy) config * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * Feat/post signup (#29) * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * fix: fix @typescript-eslint/no-unused-vars * feat: implement post-auth gate to activate categories modal when continuing with Google * feat: add github workflows actions for deployment --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> Co-authored-by: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> Co-authored-by: Whipander <133404164+Whipander@users.noreply.github.com>
Mathieu-bot
added a commit
that referenced
this pull request
Aug 31, 2025
* remove: prisma output custom path * Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> * Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> * chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * feat(server): add category CRUD operations * chore(server): update .gitignore * chore(server): update server dependencies * feat(server): configure server bootstrap * docs(server): update OpenAPI spec by removing duplication * Update .gitignore * refactor(server): move auth DB logic to service layer; keep controllers thin * feat(auth): add email and password strength validation - Add `validator` package to dependencies. - Replace regex-based email validation with `validator.js` `isEmail`. - Add password strength validation in the signup controller using `isStrongPassword` to enforce at least 6 characters, one uppercase letter, and one number. * refactor(auth): extract validation logic into middleware - Create a new [validate.js] middleware to centralize validation logic. - Implement [requireFields], [validateEmail], [sanitizeBody], and [validateTextMaxLengths] as reusable middleware functions. - Create combined middlewares `validateSignup` and `validateLogin` to simplify route definitions. - Update auth routes to use the new validation middlewares. - Simplify the `auth.controller` by removing validation logic now handled by the middleware, keeping only the password strength check. - Introduce custom error classes in utils/errors.js for better HTTP error handling. * refactor(category): case-insensitive uniqueness + middlewares create/update Enforce case-insensitive name uniqueness in service (create/update). Use HttpError subclasses (Conflict/NotFound). Add validateCategoryCreate and validateCategoryUpdate with URL checks (protocol, max 255). Wire in routes and simplify controller. * fix(api): clean up OpenAPI specification duplicates and errors * Feat/layout polish (#15) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing * feat: zustand * feat: mascot gifs * feat: add Mascot type and store * feat: mascot component with transitions * feat: mascot hooks for expression control * refactor: update toast ui to trigger mascot expressions * feat: mascot triggers to income service * fix: prevent duplicate error toast * fix: mascot frame swift transitions * style: beautify client icon portion * feat(ui): redesign Header with new subcomponents * chore: rename Header to dashboardHeader to maintain import consistency * style: use pennypal accent color * fix: notification number position * style: remove profile pic square border * style(sidebar): implement vertical curved sidebar * style: increase sidebar vertical padding * remove: delete bad resolution mascot gifs * feat: enhance header with adaptive glassmorphism effect on scroll --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> * Feat/auth (#14) * chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * Update .gitignore * refactor(server): move auth DB logic to service layer; keep controllers thin * feat(auth): add email and password strength validation - Add `validator` package to dependencies. - Replace regex-based email validation with `validator.js` `isEmail`. - Add password strength validation in the signup controller using `isStrongPassword` to enforce at least 6 characters, one uppercase letter, and one number. * refactor(auth): extract validation logic into middleware - Create a new [validate.js] middleware to centralize validation logic. - Implement [requireFields], [validateEmail], [sanitizeBody], and [validateTextMaxLengths] as reusable middleware functions. - Create combined middlewares `validateSignup` and `validateLogin` to simplify route definitions. - Update auth routes to use the new validation middlewares. - Simplify the `auth.controller` by removing validation logic now handled by the middleware, keeping only the password strength check. - Introduce custom error classes in utils/errors.js for better HTTP error handling. * Feat/category (#16) * chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * feat(server): add category CRUD operations * chore(server): update .gitignore * chore(server): update server dependencies * feat(server): configure server bootstrap * docs(server): update OpenAPI spec by removing duplication * refactor(category): case-insensitive uniqueness + middlewares create/update Enforce case-insensitive name uniqueness in service (create/update). Use HttpError subclasses (Conflict/NotFound). Add validateCategoryCreate and validateCategoryUpdate with URL checks (protocol, max 255). Wire in routes and simplify controller. * Feat/income auth (#23) * style: use datepicker instead of date textfield * refactor: fix prisma models to match openapi spec * refactor: remove unnecessary endpoints (income categories) * refactor: remove income category from service layer * refactor: update to use new field names (id) * refactor: remove category references * refactor: simplify income routes by removing category endpoints * refactor: remove income category from types * refactor: remove income category methods from services * refactor: remove category field and set default date (because of the date required in backend) * refactor: remove category display from incomelist * feat: make 1 to be the least amount when creating an income * refactor: add a dash for when source is empty * feat: required true to textfield source * refactor: make the default amount to be 1 instead of 0 * Refactor/income logic (#20) * refactor: fix prisma models to match openapi spec * refactor: remove unnecessary endpoints (income categories) * refactor: remove income category from service layer * refactor: update to use new field names (id) * refactor: remove category references * refactor: simplify income routes by removing category endpoints * refactor: remove income category from types * refactor: remove income category methods from services * refactor: remove category field and set default date (because of the date required in backend) * refactor: remove category display from incomelist * feat: make 1 to be the least amount when creating an income * refactor: add a dash for when source is empty * feat: required true to textfield source * refactor: make the default amount to be 1 instead of 0 * feat: auth middleware before granting the autorisation to fetch incomes * fix: updated password field to be hashed_password * refactor: prisma models attributes to follow the precendent ones * fix: enable CORS with credentials for frontend and feat cookieparser for testing * feat: axios options with withCredentials true to allow cookie storage in front * fix: name mismatch by turning createdAt to creation_date * fix: made source field unrequired when users are creating an income * fix(client): prevent duplicate query parameters in generated request * feat: enhance input validation in server * feat: implement frontend value validation and improve error display * refactor: remove useless import * chore: remove fake middleware and activate helmet * feat: simple expense crud (#26) * feat(api): add expense service * feat(api): add expense controller, expense route and expense validator * fix: add expense route to the main server file * fix(api): add express-validator dependency and fix minor bug * Feat/profile (#25) * style: use datepicker instead of date textfield * refactor: fix prisma models to match openapi spec * refactor: remove unnecessary endpoints (income categories) * refactor: remove income category from service layer * refactor: update to use new field names (id) * refactor: remove category references * refactor: simplify income routes by removing category endpoints * refactor: remove income category from types * refactor: remove income category methods from services * refactor: remove category field and set default date (because of the date required in backend) * refactor: remove category display from incomelist * feat: make 1 to be the least amount when creating an income * refactor: add a dash for when source is empty * feat: required true to textfield source * refactor: make the default amount to be 1 instead of 0 * Refactor/income logic (#20) * refactor: fix prisma models to match openapi spec * refactor: remove unnecessary endpoints (income categories) * refactor: remove income category from service layer * refactor: update to use new field names (id) * refactor: remove category references * refactor: simplify income routes by removing category endpoints * refactor: remove income category from types * refactor: remove income category methods from services * refactor: remove category field and set default date (because of the date required in backend) * refactor: remove category display from incomelist * feat: make 1 to be the least amount when creating an income * refactor: add a dash for when source is empty * feat: required true to textfield source * refactor: make the default amount to be 1 instead of 0 * feat: auth middleware before granting the autorisation to fetch incomes * fix: updated password field to be hashed_password * refactor: prisma models attributes to follow the precendent ones * fix: enable CORS with credentials for frontend and feat cookieparser for testing * feat: axios options with withCredentials true to allow cookie storage in front * fix: name mismatch by turning createdAt to creation_date * fix: made source field unrequired when users are creating an income * fix(client): prevent duplicate query parameters in generated request * feat: enhance input validation in server * feat: implement frontend value validation and improve error display * feat: add user profile update and password change service functions * feat: create user profile controller with get, update, and password change endpoints * feat: add user profile routes with consistent validation pattern * feat: user profile route in main app * feat: user service and add user profile methods to defaultservice via addition of new needed paths in the spec * feat: confirmPassword attribute in the change password request type * feat: user profile hook * feat(frontend): implement user profile management * remove: unnecessary ui component spinner * feat: user sotre in zustand * refactor: update dashboard header to use user store * refactor: update profile page to use zustand user store * style: fix profile page padding * refactor: better error display when users arent logged in * refactor: allow users to provide empty first and last name --------- Co-authored-by: Tafita Mathieu <hei.tafita.2@gmail.com> * chore: import api/config * chore: use location hooks for the location * style: Update index.css with slide animation * chore(server): Update docs * chore(client): regenerate SDK * feat: add LogoutButton and use it in the sidebar * feat(auth): add RequireAuth component for protected routes * feat(auth): add useAuth hooks * feat(auth): add auth pages (LoginPage, SignupPage) * feat(client): add auth components like LoginForm, SignupForm ... * Squashed commit of the following: commit 1b8d6b30501407a1c6574465ae9932d53f3ae08c Author: Matieu <hei.tafita.2@gmail.com> Date: Thu Aug 28 00:24:35 2025 +0300 chore: downgrade App.tsx and Header.tsx to fix deployment issue commit d4a3a00 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:19:58 2025 +0300 chore: add some dependences commit 9a63d38 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:17:00 2025 +0300 feat(server/auth): add google oauth service - use google given_name as default username commit 2f01f66 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:39 2025 +0300 docs(server): Update with all google oauth variables commit 23055b2 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:08 2025 +0300 chore(server/routes): wire Google OAuth routes commit 783785c Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:56 2025 +0300 chore(server): configure global fetch via utils/network and prefer IPv4 commit 80ff59d Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:44 2025 +0300 refactor(server/auth): add google auth controller commit c8cf940 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:59 2025 +0300 feat(server/auth): introduce Google OAuth service (build URL, exchange code, fetch profile) commit b909074 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:53 2025 +0300 feat(server/utils): add http timeout helper and network (IPv4/proxy) config * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * Feat/post signup (#29) * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * fix: fix @typescript-eslint/no-unused-vars * Feat/UI/auth (#28) * chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * feat(server): add category CRUD operations * chore(server): update .gitignore * chore(server): update server dependencies * feat(server): configure server bootstrap * docs(server): update OpenAPI spec by removing duplication * Update .gitignore * refactor(server): move auth DB logic to service layer; keep controllers thin * feat(auth): add email and password strength validation - Add `validator` package to dependencies. - Replace regex-based email validation with `validator.js` `isEmail`. - Add password strength validation in the signup controller using `isStrongPassword` to enforce at least 6 characters, one uppercase letter, and one number. * refactor(auth): extract validation logic into middleware - Create a new [validate.js] middleware to centralize validation logic. - Implement [requireFields], [validateEmail], [sanitizeBody], and [validateTextMaxLengths] as reusable middleware functions. - Create combined middlewares `validateSignup` and `validateLogin` to simplify route definitions. - Update auth routes to use the new validation middlewares. - Simplify the `auth.controller` by removing validation logic now handled by the middleware, keeping only the password strength check. - Introduce custom error classes in utils/errors.js for better HTTP error handling. * refactor(category): case-insensitive uniqueness + middlewares create/update Enforce case-insensitive name uniqueness in service (create/update). Use HttpError subclasses (Conflict/NotFound). Add validateCategoryCreate and validateCategoryUpdate with URL checks (protocol, max 255). Wire in routes and simplify controller. * refactor: remove useless import * chore: remove fake middleware and activate helmet * chore: import api/config * chore: use location hooks for the location * style: Update index.css with slide animation * chore(server): Update docs * chore(client): regenerate SDK * feat: add LogoutButton and use it in the sidebar * feat(auth): add RequireAuth component for protected routes * feat(auth): add useAuth hooks * feat(auth): add auth pages (LoginPage, SignupPage) * feat(client): add auth components like LoginForm, SignupForm ... * Squashed commit of the following: commit 1b8d6b30501407a1c6574465ae9932d53f3ae08c Author: Matieu <hei.tafita.2@gmail.com> Date: Thu Aug 28 00:24:35 2025 +0300 chore: downgrade App.tsx and Header.tsx to fix deployment issue commit d4a3a00 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:19:58 2025 +0300 chore: add some dependences commit 9a63d38 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:17:00 2025 +0300 feat(server/auth): add google oauth service - use google given_name as default username commit 2f01f66 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:39 2025 +0300 docs(server): Update with all google oauth variables commit 23055b2 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:08 2025 +0300 chore(server/routes): wire Google OAuth routes commit 783785c Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:56 2025 +0300 chore(server): configure global fetch via utils/network and prefer IPv4 commit 80ff59d Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:44 2025 +0300 refactor(server/auth): add google auth controller commit c8cf940 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:59 2025 +0300 feat(server/auth): introduce Google OAuth service (build URL, exchange code, fetch profile) commit b909074 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:53 2025 +0300 feat(server/utils): add http timeout helper and network (IPv4/proxy) config * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * Feat/post signup (#29) * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * fix: fix @typescript-eslint/no-unused-vars * Feat/static dashboard design (#18) * feat: static sold fluctuation chart * refactor: single layout component for every type of graph (with title and children) * feat: static spending pie with filter option * feat: simple calendar UI with react-calendar * feat: redesign the dashboard from scratch * feat: dashboard with mock data * fix: bug on the tooltip displayer * feat: seed file for test * chore: remove invalid attribute in tsconfig.app.json * feat: implement post-auth gate to activate categories modal when continuing with Google * feat: add github workflows actions for deployment * fix: fix github acrions by creating .env for prisma * fix: remove unused playload parameter * remove unnecessary eslint-disable comment * feat(vercel): route /api/* to Express app --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> Co-authored-by: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> Co-authored-by: Whipander <133404164+Whipander@users.noreply.github.com>
TsioryJonathan
pushed a commit
that referenced
this pull request
Aug 31, 2025
* chore: add .vercel to .gitignore * Squashed commit of the following: commit e91ae9d Author: COCO <colomberakotonjanahary@gmail.com> Date: Sun Aug 24 19:18:50 2025 +0300 Feat/income creation page (#11) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font * remove: icon_emoji column from income_category * fix: comprehensive error handling and validation for income categories * chore: regenerate openapi service after spec update * style: enhance loading component * fix: make date and source unrequired cause they have default fallbacks * fix: automatically refresh income list after CRUD operations * fix: improve income sorting to show most recent items first when dates are equal * feat: set Salary as default category for new income forms * feat: implement dedicated page routes for income creation and editing --------- Co-authored-by: Jonathan <rakotoarisoajonathan0@gmail.com> commit 0672521 Author: Tsiory Jonathan <167012196+TsioryJonathan@users.noreply.github.com> Date: Sun Aug 24 15:21:56 2025 +0300 Feat/basic dashboard layout (#9) * remove: prisma output custom path * chore: move lib folder in server root * chore(prisma): remove custom generator output and drop icon_emoji attribute from IncomeCategory model * feat(client): add income models * feat(server): implement income controller with full CRUD operations * feat(server): implement income category controller * feat(server): asyncHandler utility * refactor: separate controller and service logic for cleaner architecture * refactor: unify income and income-category controllers * feat: income routes * feat: GET /custom-categories endpoint to fetch categories created by the user * fix: correct income controller exports * chore: add temporary middleware to mock user (id: 4) for testing * fix(server): handle missing date field in income creation * fix(server): resolve invalid date type error * chore(api): make income.date optional and require category_id in OpenAPI spec * feat(client): implement income service * feat(client): custom react hooks for income data * feat: react-router-dom and setup initial routes for home and incomes * feat(client): income component and incomes page with full functionality * refactor: rename endpoints to /custom-categories in API spec and server to differenciate customized and system in built categories * feat: implement theme colors and fonts * feat: expandable sidebar * feat: setup theme colors and font --------- Co-authored-by: colombefioren <colomberakotonjanahary@gmail.com> commit 536036e Merge: fc8af84 3160a60 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:32:46 2025 -0400 Merge pull request #3 from colombefioren/feat/prisma-integration Feat/prisma integration commit 3160a60 Merge: 387ba2a fc8af84 Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 23 10:30:12 2025 -0400 Merge branch 'dev' into feat/prisma-integration commit 387ba2a Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:21:17 2025 +0300 refactor: change prisma.ts to prisma.js commit 9498a64 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:16:03 2025 +0300 feat: prisma service singleton commit feca228 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 13:02:21 2025 +0300 feat: income categories to schema commit c06ba95 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:57:45 2025 +0300 feat: define prisma schema models commit bc0002e Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:48:53 2025 +0300 feat: initialize prisma with postgresql setup commit e282f34 Author: colombefioren <colomberakotonjanahary@gmail.com> Date: Sat Aug 23 12:45:26 2025 +0300 chore: add prisma dependencies commit ea8a0ee Merge: b1366b7 cc6925d Author: Tafita Mathieu <hei.tafita.2@gmail.com> Date: Sat Aug 16 07:39:40 2025 -0400 Merge pull request #2 from Mathieu-bot/ui/components UI/components * feat(server): add auth route and auth service * feat(server): add category CRUD operations * chore(server): update .gitignore * chore(server): update server dependencies * feat(server): configure server bootstrap * docs(server): update OpenAPI spec by removing duplication * Update .gitignore * refactor(server): move auth DB logic to service layer; keep controllers thin * feat(auth): add email and password strength validation - Add `validator` package to dependencies. - Replace regex-based email validation with `validator.js` `isEmail`. - Add password strength validation in the signup controller using `isStrongPassword` to enforce at least 6 characters, one uppercase letter, and one number. * refactor(auth): extract validation logic into middleware - Create a new [validate.js] middleware to centralize validation logic. - Implement [requireFields], [validateEmail], [sanitizeBody], and [validateTextMaxLengths] as reusable middleware functions. - Create combined middlewares `validateSignup` and `validateLogin` to simplify route definitions. - Update auth routes to use the new validation middlewares. - Simplify the `auth.controller` by removing validation logic now handled by the middleware, keeping only the password strength check. - Introduce custom error classes in utils/errors.js for better HTTP error handling. * refactor(category): case-insensitive uniqueness + middlewares create/update Enforce case-insensitive name uniqueness in service (create/update). Use HttpError subclasses (Conflict/NotFound). Add validateCategoryCreate and validateCategoryUpdate with URL checks (protocol, max 255). Wire in routes and simplify controller. * refactor: remove useless import * chore: remove fake middleware and activate helmet * chore: import api/config * chore: use location hooks for the location * style: Update index.css with slide animation * chore(server): Update docs * chore(client): regenerate SDK * feat: add LogoutButton and use it in the sidebar * feat(auth): add RequireAuth component for protected routes * feat(auth): add useAuth hooks * feat(auth): add auth pages (LoginPage, SignupPage) * feat(client): add auth components like LoginForm, SignupForm ... * Squashed commit of the following: commit 1b8d6b30501407a1c6574465ae9932d53f3ae08c Author: Matieu <hei.tafita.2@gmail.com> Date: Thu Aug 28 00:24:35 2025 +0300 chore: downgrade App.tsx and Header.tsx to fix deployment issue commit d4a3a00 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:19:58 2025 +0300 chore: add some dependences commit 9a63d38 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:17:00 2025 +0300 feat(server/auth): add google oauth service - use google given_name as default username commit 2f01f66 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:39 2025 +0300 docs(server): Update with all google oauth variables commit 23055b2 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:14:08 2025 +0300 chore(server/routes): wire Google OAuth routes commit 783785c Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:56 2025 +0300 chore(server): configure global fetch via utils/network and prefer IPv4 commit 80ff59d Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:13:44 2025 +0300 refactor(server/auth): add google auth controller commit c8cf940 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:59 2025 +0300 feat(server/auth): introduce Google OAuth service (build URL, exchange code, fetch profile) commit b909074 Author: Matieu <hei.tafita.2@gmail.com> Date: Wed Aug 27 22:12:53 2025 +0300 feat(server/utils): add http timeout helper and network (IPv4/proxy) config * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * Feat/post signup (#29) * refactor: type the location to avoid TS errors and ignore src/api in eslint config * feat(server): seed catégories globales + script prisma:seed + spec categories icon_url * refactor: use PATCH instead of PUT for /profile * feat: Update prisma/migration * feat: implemente updateProfile * refactor: add panel classe * feat: implement post-signup flow with category selection * fix: fix @typescript-eslint/no-unused-vars * feat: implement post-auth gate to activate categories modal when continuing with Google
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Features Implemented
1. Dedicated Page Routes for Income Management
/incomes/new- Dedicated page for creating new incomes/incomes/:id/edit- Dedicated page for editing existing incomes2. Enhanced User Experience
3. UI/UX Improvements