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
You can test all backend endpoints directly using the included Postman collection:
π Click the button below to open in Postman:
- Authentication routes (login/register)
- User management endpoints
- Service request workflows
- Admin-level operations
- Officer-level operations
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 devRobust Test Suite: The project currently includes 194 passing tests across both frontend and backend to ensure reliability.
- Backend: 151 Jest & Supertest API tests
- Frontend: 43 Vitest & React Testing Library tests
cd client
npm testcd 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.