A platform for citizens, officers, and administrators to manage national services efficiently.
🔗 Live Deployment: https://civilink.onrender.com/
📧 Additional Contact: ob22adegefu123@gmail.com
CiviLink is a role-based government service automation system that allows:
- Apply for TIN (Tax Identification Number)
- Apply for Vital Registration
- Track application status
- Submit questions & queries to officers
- Receive and process applications
- Approve or reject requests
- Respond to citizen queries
- Publish weekly announcements (if assigned)
- Manage officer accounts
- Assign and remove roles
- View system metrics
- Monitor system activity
The system follows a modular full-stack architecture:
CiviLink/
│
├── client/ # React frontend
├── server/ # Node.js backend
├── docs/ # All documentation
└── .github/ # GitHub automation (CI, PR templates)
# CI is partially non-functional due to
# MongoDB & environment variable limitations
🟦 Frontend: React (JavaScript, no TypeScript)
🟩 Backend: Node.js (JavaScript, Express.js)
🗄 Database: MongoDB
🧪 Testing: Jest, Supertest
🚀 Deployment: Render
| Layer | Technologies |
|---|---|
| Frontend | React, React Router |
| Backend | Node.js, Express.js |
| Database | MongoDB |
| Validation | Joi |
| Auth | JWT-based RBAC |
| Testing | Jest, Supertest |
| Deployment | Render |
| Version Control | Git + GitHub (dev → main flow) |
- Email: superadmin@civillink.com
- Password: TheAdmin1@
- Email: fekeAsche@yahoo.com
- Email: fekeAsche@yahoo.com
- Email: SemeK@gmail.com
Because the application uses seeded data, some backend actions (approval, rejection, or responses) may fail if the data was not part of the original seed.
Additional seeded officers:
Password for all officers is: Password123!
The application integrates Chappa for payments.
- When redirected to Chappa’s payment page, DO NOT use your personal phone number or password
- Select one of Chappa’s official test phone numbers
- Complete the payment using test credentials only
This is required because the integration runs in sandbox/test mode.
git clone https://github.com/ob22a/CiviLink
cd CiviLinkcd client
npm installcd server
npm installCopy each .env.example file and rename it to .env and fill it with the appropriate values.
cd server
npm run devcd client
npm run devcd server
npm test✔ Every pull request should include tests where applicable.
- All development is done on the
devbranch
feature/<name>
bugfix/<name>
hotfix/<name>
- PRs target
dev dev → mainonly during releases- No self-merging allowed
All documentation is located in:
/docs/
Includes:
- Product requirements
- API documentation
- Architecture documentation
Not currently available:
- Roadmaps
- Risk analysis
- Scrum artifacts
- Manuals for officers and Admins
The system enforces:
- JWT authentication
- Role-Based Access Control (RBAC)
- Input validation on all endpoints
- Request logging
- No sensitive data in logs
- HTTPS enforced by Render
To report a security issue, create a GitHub Security Issue or contact the project owner.
See:
/CONTRIBUTING.md
Includes:
- Branch rules
- Commit style
- PR requirements
- Testing expectations
- Reviewer responsibilities
Most of the development work for this project was carried out in individual forks and the dev branch.
For grading and review purposes:
- Contributors worked primarily in personal forks and feature branches
- Pull requests were merged into
devusing squash-and-merge - Releases from
devtomainwere also squashed
As a result:
- The number of commits visible in
devormainmay appear lower than the actual development effort - Individual contribution levels are more accurately reflected in:
- Fork commit histories
- Pull request discussions
- The GitHub Contributors graph
Reviewers are encouraged to inspect:
- Individual forks
- Feature branches
- Pull request history
to better assess the level of contribution.