Professional Asset & Wealth Management Platform
WebSite : https://wealthmanager-uema.onrender.com/
WealthManager is a full-stack web application designed to help users manage personal and investment assets. It provides secure authentication, hierarchical asset categorization, transaction tracking, and interactive data visualization. The project is split into a React/Vite frontend (client/) and a Node.js/Express/MongoDB backend (server/).
- Frontend: React 19, Vite, styled-components, Axios, React Router, Recharts
- Backend: Node.js, Express, MongoDB (Mongoose), Passport.js, Joi, connect-mongo, dotenv
- Dev Tools: ESLint, EJS, ejs-mate
- Deployment: Render (backend API base URL)
- Session/Auth: express-session, passport-local-mongoose
- Frontend (
client/): Built with React 19, Vite, and styled-components. Features modular components, hooks for state/context, and protected routes for authenticated access. - Backend (
server/): Node.js with Express, MongoDB via Mongoose, Passport.js for authentication, and modular controllers/routes. Asset data is organized in nested categories with cascade deletion and value aggregation. - API Communication: RESTful endpoints, with Axios on the frontend (
client/src/servises/apis/apis.js). - Session & Auth: Passport-local-mongoose for user management, sessions via express-session and connect-mongo.
- User Authentication: Registration and login via Passport.js. See
client/src/componets/layoutComponets/authentication/andserver/middlewares/Authentication.js. - Asset Management: Hierarchical categories, products, transactions, and statements. Cascade deletion and nesting up to 4 levels. See
server/models/assets/assetsCat.js. - Data Visualization: Interactive charts for asset performance (
client/src/pages/assets/charts.jsx). - Flash Messaging: Context-based flash messages for user feedback (
client/src/hooks/flashContext.jsx). - Auto-Refresh: User/session data auto-refreshes for up-to-date views (
client/src/hooks/userContext.jsx).
wealthManager/
├── client/ # React frontend
│ ├── src/
│ │ ├── componets/ # UI components (layout, single, route protection)
│ │ ├── hooks/ # Custom hooks (user, flash, form, etc.)
│ │ ├── pages/ # Page-level components
│ │ ├── servises/ # API abstraction
│ │ ├── styles/ # Global/theme styles
│ │ └── utills/ # Helpers/utilities
│ ├── public/
│ ├── package.json
│ └── vite.config.js
├── server/ # Node.js backend
│ ├── config/ # DB connection
│ ├── controllers/ # Business logic
│ ├── middlewares/ # Auth, CORS, session, parsing
│ ├── models/ # Mongoose schemas
│ ├── routes/ # Express routers
│ ├── utills/ # Logging, errors, helpers
│ ├── package.json
│ └── server.js
├── LICENSE.txt
└── README.md
- Node.js v18+
- npm (or yarn)
- MongoDB instance (local or cloud)
- Clone the repository
- Install dependencies
- Frontend:
cd client && npm install - Backend:
cd server && npm install
- Frontend:
- Environment Variables
- Backend: Create
.envinserver/with at leastDB_URLandPORT.
- Backend: Create
- Run Development Servers
- Frontend:
cd client && npm run dev - Backend:
cd server && npm start
- Frontend:
- The frontend expects the backend at
https://wealthmanager-backend-1y3o.onrender.com(seeapis.js). Update as needed for local development.
- Frontend Build:
npm run build(Vite) - Frontend Lint:
npm run lint - Backend Start:
npm start - Backend DB Indexes: Auto-created on startup (
server/config/connectDB.js) - Session & Auth: Managed via Passport.js and express-session
- Debugging: Use browser dev tools for frontend; Node.js debugger or console for backend
- Component Organization: UI split into layout, single, and route protection components
- Hooks: Custom hooks for context, form, auto-refresh, etc.
- API Abstraction: All HTTP requests via Axios instance (
apis.js) - Cascade Deletion: Asset categories delete child products/transactions/statements recursively
- Protected Routes: React Router + custom protection (
protectedRoute.jsx) - Flash Messages: Context-based, auto-dismissed
- Data Structure: See
structure.txtfor user/category schema
MIT License. See LICENSE.txt.
For any inquiries or feedback, please reach out to:
Email: amirsheikhvia@gmail.com
GitHub: https://github.com/VampireTRIBE