Streamlining African Trade through AI-Powered Compliance.
AfriVerify represents a pioneering full-stack web application designed to empower African small and medium-sized enterprises (SMEs) in navigating the complexities of the African Continental Free Trade Area (AfCFTA) Rules of Origin (RoO). By leveraging AI-driven compliance tools, it enables users to efficiently evaluate RoO adherence and systematically organize evidentiary documentation essential for securing preferential tariffs.
Built with a modern stack:
- Frontend: React (Vite + Tailwind CSS) π±
- Backend: FastAPI + SQLite (SQLAlchemy) βοΈ
Users can manage compliance assessments, upload supporting documents, and interact with Zuri β an AI assistant powered by Google Gemini for trade guidance π€.
- JWT Authentication (Email/Password) with secure token-based access π
- User Profile with Home Country & Target Market settings π
- RoO Value-Added Engine with instant eligibility status π
- Compliance Assessments tracking per product/shipment π
- Document Repository for uploading and linking evidence π
- Zuri AI Chat β context-aware trade assistant (Gemini) π¬
The following gallery showcases the core user interface and the end-to-end compliance journey within the application.
- Git
- Node.js 18+ (npm included)
- Python 3.11+
Clone the repository:
git clone https://github.com/Bini-2002/afri-verify.git
cd afri-verifyFrom the server/ folder:
cd server
python -m venv .venv
.
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt --default-timeout=180Create your environment file:
- Copy
server/.env.exampleβserver/.env - Set at least
SECRET_KEY - (Optional) set
GEMINI_API_KEYto enable the Zuri AI endpoint
Run the API:
python -m uvicorn app.main:app --reload --host 127.0.0.1 --port 8000You can verify the server is up at:
http://127.0.0.1:8000/
From the client/ folder:
cd ..\client
npm install
npm run devOpen the app at:
http://localhost:5173/
With the API running:
cd ..\server
powershell -ExecutionPolicy Bypass -File .\scripts\smoke_auth.ps1- SQLite schema changes: the backend uses
create_all()(no migrations). For a clean run after model changes, deleteserver/afriverify.dband restart the server.
Contributions, bug reports, and feature ideas are welcome.
- Fork the repo and create a feature branch.
- Keep PRs focused (one feature/fix per PR) and include a short description + screenshots if UI changes.
- If your change affects the API contract, update the README/docs accordingly.
Suggested workflow:
- Open an issue describing what you want to change.
- Submit a Pull Request referencing the issue.
- Use GitHub Issues to report bugs, request features, or suggest improvements.
- Include:
- Steps to reproduce
- Expected vs actual behavior
- Screenshots/logs (if applicable)
- Your OS, Node version, and Python version
This project aims to be welcoming and inclusive. Please be respectful in issues and PR discussions.
Thanks for checking out AfriVerify. If you find this project useful for AfCFTA compliance workflows (or want to build on it), please consider starring the repository and sharing feedback via Issues.
This project is licensed under the MIT License β see LICENSE.





