Ventiqa
Digital invitations, live RSVP tracking and QR check-in for Tanzanian events. A Django platform, live at ventiqa.co.tz.
- Role
- Engineering
- Built with
- Django, Python, PostgreSQL, Redis, Docker, Cloudinary

An event platform for Tanzanian organisers. Build a guest list, send every guest their own invitation card over WhatsApp or SMS, watch the replies arrive, then scan people in at the door. It is running in production at ventiqa.co.tz.
This is client work at Techpreneurs Solution, where I am a developer and graphic designer.
What it does
Four steps, which is the whole product:
- Build the list. Upload from Excel, or add guests one at a time.
- Send invitations. Each guest gets their own card, delivered over WhatsApp or SMS.
- Track replies. Watch who is coming as the answers come in.
- Run the door. Scan each guest in and count the room live.
It is priced per invitation record rather than per event, which suits organisers running one wedding as well as a company running a season of seminars.
How it is put together
The Django project is split into eleven apps, accounts, cards, check-ins, contributions, core, events, feedback, guests, messaging, payments and reports, so the messaging and check-in paths can change without touching each other.
A few decisions worth naming:
- Postgres in production, SQLite as a fallback. The settings read
DATABASE_URLand drop to a local SQLite file when it is absent, so a fresh clone runs with no database to set up first. - Redis for cache, with a local-memory fallback on the same principle. Nothing about first-run setup depends on a service being up.
- A
seed_democommand. The project can be brought up populated, which is the difference between a repo someone can evaluate in two minutes and one they give up on. - Docker and docker-compose for parity, a
Procfilefor platform deploys, and GitHub Actions in the repository.