{"id":50425046,"url":"https://github.com/mr-ndi/mbank","last_synced_at":"2026-05-31T10:01:35.888Z","repository":{"id":272409145,"uuid":"916483540","full_name":"Mr-Ndi/MBank","owner":"Mr-Ndi","description":"A modern, scalable platform for students to access and manage past exam papers, built with React, Node.js, and PostgreSQL. Includes secure authentication and plans for future mobile support via Flutter..","archived":false,"fork":false,"pushed_at":"2025-11-12T15:11:14.000Z","size":32085,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-12T16:24:15.276Z","etag":null,"topics":["education","exam-papers","flutter","full-stack","jwt","modern-web","nodejs","oauth2","postgresql","react","rest-api","student-resources","tailwindcss","typescript","vite"],"latest_commit_sha":null,"homepage":"","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/Mr-Ndi.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":"2025-01-14T07:25:22.000Z","updated_at":"2025-11-12T15:11:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"a8c5acc4-5595-42fe-895e-341052521285","html_url":"https://github.com/Mr-Ndi/MBank","commit_stats":null,"previous_names":["mr-ndi/my_bank"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mr-Ndi/MBank","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mr-Ndi%2FMBank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mr-Ndi%2FMBank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mr-Ndi%2FMBank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mr-Ndi%2FMBank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mr-Ndi","download_url":"https://codeload.github.com/Mr-Ndi/MBank/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mr-Ndi%2FMBank/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33726719,"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-05-31T02:00:06.040Z","response_time":95,"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":["education","exam-papers","flutter","full-stack","jwt","modern-web","nodejs","oauth2","postgresql","react","rest-api","student-resources","tailwindcss","typescript","vite"],"created_at":"2026-05-31T10:01:35.076Z","updated_at":"2026-05-31T10:01:35.876Z","avatar_url":"https://github.com/Mr-Ndi.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MBank (Marks Bank) / Cupuri\n\n## Overview\nThis project is a modern, scalable platform for students to access past exam papers and resources to prepare for their exams effectively. It includes a web-based application built with React and Tailwind CSS, with plans to extend to a mobile app using Flutter if the web-based app sees significant usage.\n\n---\n\n## Features\n- **User Authentication**: Secure login and registration using OAuth 2.0.\n- **Access to Exam Papers**: Students can search, filter, and download past papers.\n- **Responsive Design**: Built for both desktop and mobile web browsers.\n- **Secure API**: Token-based authentication with JWT and refresh tokens for secure and stateless API calls.\n\n---\n\n## Tech Stack\n### Backend\n- **Node.js** (TypeScript): For building the RESTful API.\n- **PostgreSQL**: Relational database for storing user data, exam papers, and other resources.\n- **OAuth 2.0**: Used for authentication and authorization.\n\n### Frontend (Web)\n- **React**: For building the user interface.\n- **Vite**: For fast development and optimized builds.\n- **TypeScript**: For type safety and scalability.\n- **Tailwind CSS**: For efficient, consistent, and modern styling.\n\n### Mobile (Future Development - Conditional)\n- **Dart/Flutter**: For building cross-platform mobile applications if the web-based app usage justifies the need.\n\n---\n\n## Installation and Setup\n\n### Prerequisites\nEnsure you have the following installed on your system:\n- **Node.js** (v16+)\n- **PostgreSQL** (v12+)\n- **Git**\n- **Yarn** or **npm**\n\n### Clone the Repository\n```bash\ngit clone https://github.com/Mr-Ndiname/MBank.git\ncd MBank\n```\n\n### Backend Setup\n1. Navigate to the backend folder:\n   ```bash\n   cd backend\n   ```\n2. Install dependencies:\n   ```bash\n   yarn install\n   ```\n3. Create a `.env` file and configure the following environment variables:\n   ```env\n   PORT=5000\n   DATABASE_URL=postgresql://user:password@localhost:5432/mbank\n   JWT_SECRET=my_jwt_secret\n   REFRESH_TOKEN_SECRET=my_refresh_token_secret\n   ACCESS_TOKEN_EXPIRY=15m\n   REFRESH_TOKEN_EXPIRY=7d\n   ```\n4. Run database migrations:\n   ```bash\n   yarn run migrate\n   ```\n5. Start the backend server:\n   ```bash\n   yarn run dev\n   ```\n\n### Frontend Setup\n1. Navigate to the frontend folder:\n   ```bash\n   cd frontend\n   ```\n2. Install dependencies:\n   ```bash\n   yarn install\n   ```\n3. Create a `.env` file and configure the following environment variables:\n   ```env\n   VITE_API_BASE_URL=http://localhost:5000/api\n   ```\n4. Start the development server:\n   ```bash\n   yarn run dev\n   ```\n\n---\n\n## API Overview\n### Authentication\n- **POST /auth/login**: User login (OAuth 2.0 flow).\n- **POST /auth/register**: User registration.\n- **POST /auth/refresh-token**: Refresh access token using refresh token.\n\n### Exam Papers\n- **GET /papersInSchool**: Retrieve a list of past exam papers (supports pagination and filtering).\n- **GET /papers/:ModuleName**: Retrieve a specific exam paper by ID.\n- **POST /papers**: Add a new exam paper\n\n---\n\n## Security\n- **Token-Based Authentication**: Access tokens (JWT) are used for stateless authentication.\n- **Secure Data Storage**: Environment variables for sensitive data.\n- **HTTPS**: Enforce HTTPS for secure communication.\n- **Role-Based Access Control**: Different permissions for students and admins.\n\n---\n\n## Future Enhancements\n1. **Mobile App**: Build a Flutter-based mobile application for cross-platform support if the web app usage grows significantly.\n2. **Push Notifications**: Notify users about new exam papers and updates.\n3. **GraphQL API**: Transition to GraphQL for more flexible querying.\n4. **Advanced Search**: Add AI-based search for better paper recommendations.\n\n---\n\n## Contributing\nContributions are welcome! Please follow these steps:\n1. Fork the repository.\n2. Create a new branch for your feature:\n   ```bash\n   git checkout -b feature-name\n   ```\n3. Commit your changes and push:\n   ```bash\n   git commit -m \"Add feature description\"\n   git push origin feature-name\n   ```\n4. Submit a pull request.\n\n---\n\n## License\nThis project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.\n\n---\n\n## Contact\nFor questions or feedback, feel free to reach out:\n- **Email**: ndiramiyeninshuti1@gmail.com | onlythenotes@gmail.com\n- **GitHub Issues**: [Submit an issue](https://github.com/Mr-Ndi/MBank/issues)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmr-ndi%2Fmbank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmr-ndi%2Fmbank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmr-ndi%2Fmbank/lists"}