{"id":50721231,"url":"https://github.com/nikoladevelops/react-banking-dashboard","last_synced_at":"2026-06-10T00:01:42.185Z","repository":{"id":357859816,"uuid":"1235290312","full_name":"nikoladevelops/react-banking-dashboard","owner":"nikoladevelops","description":"Banking dashboard with React","archived":false,"fork":false,"pushed_at":"2026-05-27T11:37:33.000Z","size":12827,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T13:23:01.249Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nikoladevelops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-11T07:24:45.000Z","updated_at":"2026-05-26T14:07:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nikoladevelops/react-banking-dashboard","commit_stats":null,"previous_names":["nikoladevelops/react-banking-dashboard"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nikoladevelops/react-banking-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikoladevelops%2Freact-banking-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikoladevelops%2Freact-banking-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikoladevelops%2Freact-banking-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikoladevelops%2Freact-banking-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nikoladevelops","download_url":"https://codeload.github.com/nikoladevelops/react-banking-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nikoladevelops%2Freact-banking-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34130642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-10T00:01:41.271Z","updated_at":"2026-06-10T00:01:42.134Z","avatar_url":"https://github.com/nikoladevelops.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Banking Dashboard – Full Stack Application\n\n\u003e **Status: 🚧 Under active development**\n\nA modern banking dashboard with a secure backend API (Node.js + Express + MongoDB + Mongoose) and a responsive frontend (React + Tailwind + Vite).  \nThe application includes user authentication (JWT, httpOnly cookies), role management, and a clean layered architecture (repository → service → controller → route).\n\n## 🧰 Tech Stack\n\n### Backend\n- **Runtime**: Node.js (v18+)\n- **Framework**: Express 5\n- **Database**: MongoDB with Mongoose ODM\n- **Authentication**: JWT (httpOnly cookies)\n- **Password hashing**: bcrypt\n- **Language**: TypeScript\n- **Architecture**: Repository → Service → Controller → Route\n\n### Frontend\n- **Build tool**: Vite\n- **UI library**: React 19\n- **Styling**: Tailwind CSS (dark mode ready)\n- **State management**: Zustand\n- **Routing**: React Router 7\n- **Form handling**: React Hook Form\n- **HTTP client**: Axios\n- **Internationalisation**: i18next\n\n## 📦 Prerequisites\n\n- Node.js (v18 or higher)\n- MongoDB (local instance or MongoDB Atlas)\n- npm or yarn\n- Git\n\n## 🔐 Environment Variables\n\n### Backend (`.env` in `server/` folder)\n\nCreate a `.env` file in the `server/` folder with the following variables (see `.env.example`):\n\n```env\nPORT=5000\nMONGO_URI=mongodb://localhost:27017/banking_app\nJWT_SECRET=your_strong_secret_at_least_32_characters\nNODE_ENV=development\nFRONTEND_URL=http://localhost:5173\n```\n\n### Frontend (`.env` in `frontend/` folder)\n\n```env\nVITE_API_BASE_URL=http://localhost:5000\n```\n\n\u003e **Important**: Never commit `.env` files. They are already ignored via `.gitignore`.\n\n## 🚀 Installation \u0026 Setup\n\n1. **Clone the repository**  \n   ```bash\n   git clone https://github.com/your-username/banking-dashboard.git\n   cd banking-dashboard\n   ```\n\n2. **Backend setup**  \n   ```bash\n   cd server\n   npm install\n   cp .env.example .env          # edit with your values\n   ```\n\n3. **Frontend setup**  \n   ```bash\n   cd ../frontend\n   npm install\n   cp .env.example .env          # edit with your values\n   ```\n\n## ▶️ Running the Application\n\n### Development mode (two terminals)\n\n**Terminal 1 – Backend**\n```bash\ncd server\nnpm run dev       # starts with tsx --watch, auto‑restarts on changes\n```\n\n**Terminal 2 – Frontend**\n```bash\ncd frontend\nnpm run dev       # starts Vite dev server\n```\n\n- Backend runs on `http://localhost:5000`\n- Frontend runs on `http://localhost:5173`\n\n### Production build\n\n**Backend**\n```bash\ncd server\nnpm run build     # compiles TypeScript to dist/\nnpm start         # runs compiled code\n```\n\n**Frontend**\n```bash\ncd frontend\nnpm run build     # creates production bundle in dist/\nnpm run preview   # preview production build locally\n```\n\n## 📝 Development Notes\n\n- The backend uses **Express 5**, which automatically catches errors from async route handlers – no manual `try/catch` wrappers needed.\n- Error responses contain a client‑friendly `errorKey` (e.g., `\"users.userNotFound\"`) for easy internationalisation.\n- Monetary values are stored as **integer cents** (e.g., `15075` = 150.75 BGN). The client sends major units, the service converts.\n- **MongoDB transactions** are used for transfers – atomic updates with rollback on failure.\n- Dark mode is fully supported and persists via `localStorage`. The `\u003chtml\u003e` background is set inline to prevent white flashes on refresh.\n- All required environment variables are validated at startup – the app will exit with a descriptive message if any are missing.\n\n## 📄 License\n\nThis project is for educational/demo purposes. No official license yet.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikoladevelops%2Freact-banking-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnikoladevelops%2Freact-banking-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnikoladevelops%2Freact-banking-dashboard/lists"}