A centralized internal management system built for Greenpeace OVC1110 (NGO) to streamline the recording of student data, daily activity reports, attendance, expenses, and donations.
Prior to this system, NGO operations were tracked manually, leading to data fragmentation, lost records, and operational friction during daily activities.
A lightweight, full-stack web application that enables staff to seamlessly input, store, and retrieve operational data through a centralized, minimal dashboard.
- Backend: Node.js, Express.js
- Database: MongoDB, Mongoose
- Frontend: Vanilla HTML, CSS, JavaScript (Fetch API)
- Architecture: REST API, MVC-inspired pattern
- Student Registry: Track demographics, guardians, and specific needs.
- Activity Reports: Log daily program activities, challenges, and solutions.
- Attendance: Record daily student attendance per program.
- Expense Tracker: Log individual operational expenses with approval tracking.
- Donation Ledger: Record cash and in-kind donations with estimated financial valuations.
- Clone the repository.
- Run
npm install. - Create a
.envfile in the root directory and copy the variables from.env.example. - Ensure MongoDB is running locally (or provide your MongoDB Atlas URI).
- Run
node src/server.jsto start the server. - Navigate to
http://localhost:5000to access the Staff Portal.
- Migrate core modules to TypeScript for type safety.
- Implement PostgreSQL via Prisma ORM for strict relational data integrity.
- Add JWT-based staff authentication and role-based access control.
- Dockerize the application for consistent deployment.