Open-source data collection platform API
About • Features • Get Involved • Roadmap • Community
Zoka API is the backend REST API for the Zoka ecosystem - a modern, open-source data collection platform designed for field surveys, research projects, and data gathering operations.
Project Status: This project is in early development. We're currently building the foundation and would love your help! Check out our roadmap and contribution guide to get involved.
- Zoka API (this repo) - RESTful API backend (In development)
- Zoka Collect (coming soon) - Mobile data collection app
- Zoka Toolbox (coming soon) - Web-based management platform
- Open Source: Fully transparent, community-driven
- Offline-first: Collect data anywhere, sync when online
- Secure: Built with security best practices from day one
- Flexible: Adaptable to various data collection needs
- Modern Stack: Built with FastAPI, PostgreSQL, and cutting-edge tools
- JWT-based authentication with refresh tokens
- Role-based access control (RBAC)
- Organization-level isolation
- Fine-grained permissions
- Dynamic form builder with XLSForm support
- Offline data collection support
- GPS coordinates capture
- Media attachments (photos, audio, video)
- Form versioning and history
- Organization management
- Project-based workflows
- User assignments and quotas
- Team collaboration tools
- Offline-first architecture
- Conflict resolution
- Device sync status tracking
- Bulk data upload
- Submission validation workflows
- Comments and collaboration
- Audit logging
- Data export (CSV, XLSX, JSON, SPSS)
- Real-time alerts
- Email notifications
- In-app notifications
- Customizable triggers
We're looking for contributors! Whether you're a developer, designer, technical writer, or just passionate about open-source data collection tools, there's a place for you here.
- Code: Help build features (check good first issues)
- Documentation: Write guides, improve docs, add examples
- Testing: Find bugs, write tests, improve quality
- Ideas: Share feature suggestions and use cases
- Design: Help with UX/UI for future web/mobile apps
- Support: Star the repo, share with others
Ready to contribute? Here's how:
- Read our Contributing Guide
- Check the Roadmap to see what we're working on
- Look for good first issues
- Join the discussion in GitHub Discussions
- Fork the repo and start coding!
- Framework: FastAPI - Modern, fast web framework
- Database: PostgreSQL 15+ - Reliable relational database
- Cache: Redis 7+ - For sessions and caching
- ORM: SQLAlchemy 2.0 - Powerful Python SQL toolkit
- Validation: Pydantic v2 - Data validation using Python type hints
- Migrations: Alembic - Database migration tool
- Containerization: Docker & Docker Compose
- Testing: pytest - Testing framework
- Code Quality: Ruff (linting & formatting), mypy (type checking)
- CI/CD: GitHub Actions
- Task Queue: Celery (planned)
- Project structure and setup
- Documentation (README, CONTRIBUTING, CODE_OF_CONDUCT)
- GitHub templates and workflows
- Database schema implementation
- Docker development environment
- Basic FastAPI setup
- Database migrations with Alembic
- User model and registration
- JWT authentication
- Password hashing and security
- Login/logout endpoints
- Refresh token mechanism
- Basic authorization
- Organization management
- Project CRUD operations
- User-project assignments
- Role-based permissions
- API documentation (OpenAPI)
- Form builder (XLSForm support)
- Form versioning
- Submission endpoints
- File upload handling
- GPS data capture
- Offline sync logic
- Notifications system
- Comments and collaboration
- Data export functionality
- Audit logging
- Mobile app API optimization
- Real-time sync improvements
- Media handling optimization
- Performance tuning
- Comprehensive testing (>80% coverage)
- Security audit
- Performance optimization
- Production deployment guide
- v1.0 Release
See our detailed roadmap for more information.
We're currently in Phase 1: Foundation. Here's what we're working on:
- Project structure
- Documentation
- Database schema
- Development environment
- API design
- Complete database models
- Setup Docker development environment
- Implement authentication system
- Build first API endpoints
- Contributing Guide - How to contribute
- Code of Conduct - Community guidelines
- Project Structure - (Coming soon)
- Database Schema - (Coming soon)
- API Documentation - (Coming soon)
- Installation Guide - (Coming soon)
- Deployment Guide - (Coming soon)
- GitHub Issues: Report bugs or request features
- GitHub Discussions: Ask questions and share ideas
- Email: [email protected] (Coming soon)
We are committed to providing a welcoming and inclusive environment. Please read our Code of Conduct.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
We chose Apache 2.0 because it:
- Allows commercial use
- Permits modification and distribution
- Provides patent protection
- Requires attribution
- Is widely recognized and trusted
This project is inspired by existing data collection tools and built with modern technologies:
- FastAPI - Amazing web framework
- SQLAlchemy - Powerful ORM
- ODK - Open Data Kit inspiration
- KoBoToolbox - Data collection inspiration
If you find Zoka useful, please consider:
- Starring the repository
- Reporting bugs
- Suggesting features
- Sharing with others
- Contributing code
- Improving documentation
Our vision is to create a free, open-source alternative to commercial data collection platforms that:
- Empowers researchers and organizations in low-resource settings
- Provides enterprise-grade features without the enterprise price tag
- Prioritizes user privacy and data sovereignty
- Supports offline-first workflows for field work
- Builds a strong, supportive community