Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
d2caefc
remove: prisma output custom path
colombefioren Aug 23, 2025
0cc1484
chore: move lib folder in server root
colombefioren Aug 23, 2025
7af6226
chore(prisma): remove custom generator output and drop icon_emoji att…
colombefioren Aug 23, 2025
b0aff8a
feat(client): add income models
colombefioren Aug 23, 2025
08dcacc
feat(server): implement income controller with full CRUD operations
colombefioren Aug 23, 2025
3567d5e
feat(server): implement income category controller
colombefioren Aug 23, 2025
8acfe4d
feat(server): asyncHandler utility
colombefioren Aug 23, 2025
3928203
refactor: separate controller and service logic for cleaner architecture
colombefioren Aug 23, 2025
ad7d22d
refactor: unify income and income-category controllers
colombefioren Aug 23, 2025
867f846
feat: income routes
colombefioren Aug 23, 2025
87d9b4c
feat: GET /custom-categories endpoint to fetch categories created by …
colombefioren Aug 23, 2025
c094fd0
fix: correct income controller exports
colombefioren Aug 23, 2025
34ce5bb
chore: add temporary middleware to mock user (id: 4) for testing
colombefioren Aug 23, 2025
01853ee
fix(server): handle missing date field in income creation
colombefioren Aug 23, 2025
b263485
fix(server): resolve invalid date type error
colombefioren Aug 23, 2025
962ea93
chore(api): make income.date optional and require category_id in Open…
colombefioren Aug 23, 2025
ea517fa
feat(client): implement income service
colombefioren Aug 23, 2025
825f96d
feat(client): custom react hooks for income data
colombefioren Aug 23, 2025
66b5777
feat: react-router-dom and setup initial routes for home and incomes
colombefioren Aug 24, 2025
59b4a60
feat(client): income component and incomes page with full functionality
colombefioren Aug 24, 2025
77a953d
refactor: rename endpoints to /custom-categories in API spec and serv…
colombefioren Aug 24, 2025
9eac272
feat: implement theme colors and fonts
colombefioren Aug 24, 2025
6a01812
feat: expandable sidebar
TsioryJonathan Aug 24, 2025
f057393
feat: setup theme colors and font
colombefioren Aug 24, 2025
9d5984d
chore: resolve conflicts
TsioryJonathan Aug 24, 2025
49274c9
Merge branch 'style/theme' of https://github.com/Mathieu-bot/expense-…
colombefioren Aug 24, 2025
7a1756d
remove: icon_emoji column from income_category
colombefioren Aug 24, 2025
c394cfa
fix: comprehensive error handling and validation for income categories
colombefioren Aug 24, 2025
cddcba9
feat: minimal dashboard setup with a collapsible sidebar and a simple…
TsioryJonathan Aug 24, 2025
61fda3b
chore: regenerate openapi service after spec update
colombefioren Aug 24, 2025
a4ba54d
fix(ui): resolve z-index rendering issue and merge conflicts
colombefioren Aug 24, 2025
3a03a54
style: enhance loading component
colombefioren Aug 24, 2025
092d77a
fix: make date and source unrequired cause they have default fallbacks
colombefioren Aug 24, 2025
418d8be
fix: automatically refresh income list after CRUD operations
colombefioren Aug 24, 2025
c402d7d
fix: improve income sorting to show most recent items first when date…
colombefioren Aug 24, 2025
eb70dfb
feat: set Salary as default category for new income forms
colombefioren Aug 24, 2025
19e7a8c
feat: implement dedicated page routes for income creation and editing
colombefioren Aug 24, 2025
6fbd09a
chore: resolve merge conflicts
colombefioren Aug 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion client/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ import Sidebar from "./components/common/Sidebar";
import Dashboard from "./pages/Dashboard";
import DashboardHeader from "./components/common/Header";
import BackgroundImage from "./components/common/BackgroundImage";
import { CreateIncomePage } from "./pages/CreateIncomePage";
import { EditIncomePage } from "./pages/EditIncomePage";

function App() {
/*
TODO: check auth then redirect to /login when not authenticated
TODO: use different layout for auth page and dashboard page
*/
const location = useLocation();

return (
<ToastProvider
max={4}
Expand All @@ -33,6 +34,8 @@ function App() {
<Routes>
<Route path="/" element={<Dashboard />} />
<Route path="/incomes" element={<IncomesPage />} />
<Route path="/incomes/new" element={<CreateIncomePage />} />
<Route path="/incomes/:id/edit" element={<EditIncomePage />} />
</Routes>
</div>
</ToastProvider>
Expand Down
Loading