Feat/static dashboard design#18
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
For now there is no filter yet, I completely forgot it |
|
I’ve only looked at the package.json so far, but I noticed that Recharts, Nivo, and MUI are all listed. Since they seem to serve a similar purpose, is there a reason we need all three? |
Maybe in the near future we will need them so why not only uninstall then when we finish the project ? |
|
I’ll take a look at the other code later 🕴️
…On Wed, Aug 27, 2025, 2:08 PM Tsiory Jonathan ***@***.***> wrote:
*TsioryJonathan* left a comment (Mathieu-bot/expense-tracker#18)
<#18 (comment)>
I’ve only looked at the package.json so far, but I noticed that Recharts,
Nivo, and MUI are all listed. Since they seem to serve a similar purpose,
is there a reason we need all three?
Maybe in the near future we will need them so why not only uninstall then
when we finish the project ?
—
Reply to this email directly, view it on GitHub
<#18 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BPVDIT3IPOSSLXL2OVHZTZD3PWGRDAVCNFSM6AAAAACE5ZDRRWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTEMRXG43DOOBWGY>
.
You are receiving this because your review was requested.Message ID:
***@***.***>
|
colombefioren
left a comment
There was a problem hiding this comment.
Everything's fine, except the prisma seed and the migrations which are still using the income category and thats totally my fault T.T My bad, I already refactored it tho
|
No worries, but actually this happened because the PR got merged without
checking the seed and migrations 😅
…On Wed, Aug 27, 2025, 7:59 PM COCO ***@***.***> wrote:
***@***.**** approved this pull request.
Everything's fine, except the prisma seed and the migrations which are
still using the income category and thats totally my fault T.T My bad, I
already refactored it tho
—
Reply to this email directly, view it on GitHub
<#18 (review)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BPVDIT5WKE27VXXEQBBOHE33PXPVRAVCNFSM6AAAAACE5ZDRRWVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZTCNRQHAZTSMZVHA>
.
You are receiving this because your review was requested.Message ID:
***@***.***>
|
* 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>
This is just a UI for the dashboard with mock data
I've also added a seed.js file for the server just in case you need it