AI-powered port terminal management — smart booking, QR-based gate access and real-time capacity monitoring.
Built at MicroHack 2026, organized by Micro Club and Algerian Port Community System. The challenge: a truck booking management system with an intelligent logistics assistant to regulate port access, manage terminal capacity and answer booking questions in natural language.
Port terminals still rely on manual booking, phone calls and paper checks at the gate. The result: trucks queuing for hours, terminals that are overbooked one hour and empty the next, and no real-time view of what is happening.
APCS digitizes the whole flow of a truck through the terminal:
- Smart booking — carriers book a timeslot, with live capacity per hour
- QR gate access — each confirmed booking gets a one-time QR code, scanned at the gate
- Late arrival handling — a late truck is moved to a late-capacity slot or automatically rescheduled
- AI assistant — ask in natural language: "What are my bookings this week?" — the agent calls backend tools to answer with real data
- Role-based dashboards — Admin, Operator and Carrier each get their own view
- Incidents & audit log — issues are tracked and every action is logged
| Repository | Role | Stack |
|---|---|---|
| Frontend | Web app with role-based dashboards (admin, operator, carrier) | React 19, Vite, Tailwind CSS 4, Recharts |
| Backend | Core REST API — auth, bookings, timeslots, QR codes, incidents | Laravel 12, MySQL, JWT, Docker |
| Gate-Control-App | Gate-side app for scanning QR codes and processing truck entries | JavaScript |
| Ai-Agent-Service | AI assistant with tool calling over the backend API | Python, FastAPI, Ollama (Llama 3.2) |
graph LR
U[Admin / Operator / Carrier] --> FE[Frontend<br/>React]
G[Gate operator] --> GA[Gate-Control-App]
FE -->|REST| BE[Backend<br/>Laravel]
GA -->|REST| BE
BE --> DB[(MySQL)]
FE -->|Chat| AI[Ai-Agent-Service<br/>FastAPI]
AI -->|Tool calls| BE
AI --> LLM[Ollama<br/>Llama 3.2]
stateDiagram-v2
[*] --> Pending: Carrier books a slot
Pending --> Confirmed: Admin approves (QR generated)
Pending --> Rejected: Admin rejects
Confirmed --> InProgress: QR scanned at the gate
InProgress --> Completed: Shipment done
Rejected --> [*]
Completed --> [*]
- Adel Merad — GitHub · LinkedIn
- Wail Mansour Ouahchia — GitHub
- Amine Ouattas — GitHub
- Abderrahmane Barkou — GitHub
- Mohamed Amine Baziz
Built with ❤️ at MicroHack 2026 — Laravel · React · Python