Skip to content

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.

License

Notifications You must be signed in to change notification settings

Garboko/zoka-api

Zoka API

Zoka Logo

Open-source data collection platform API

License Python FastAPI PostgreSQL PRs Welcome Project Status

About • Features • Get Involved • Roadmap • Community


About

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.

The Zoka Ecosystem

  • 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

Why Zoka?

  • 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

Planned Features

Authentication & Authorization

  • JWT-based authentication with refresh tokens
  • Role-based access control (RBAC)
  • Organization-level isolation
  • Fine-grained permissions

Data Collection

  • Dynamic form builder with XLSForm support
  • Offline data collection support
  • GPS coordinates capture
  • Media attachments (photos, audio, video)
  • Form versioning and history

Multi-tenancy

  • Organization management
  • Project-based workflows
  • User assignments and quotas
  • Team collaboration tools

Synchronization

  • Offline-first architecture
  • Conflict resolution
  • Device sync status tracking
  • Bulk data upload

Data Management

  • Submission validation workflows
  • Comments and collaboration
  • Audit logging
  • Data export (CSV, XLSX, JSON, SPSS)

Notifications

  • Real-time alerts
  • Email notifications
  • In-app notifications
  • Customizable triggers

Get Involved

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.

Ways to Contribute

  • 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

Getting Started

Ready to contribute? Here's how:

  1. Read our Contributing Guide
  2. Check the Roadmap to see what we're working on
  3. Look for good first issues
  4. Join the discussion in GitHub Discussions
  5. Fork the repo and start coding!

Tech Stack

Backend

  • 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

DevOps & Tools

  • 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 Roadmap

Phase 1: Foundation (Current)

  • 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

Phase 2: Core Authentication

  • User model and registration
  • JWT authentication
  • Password hashing and security
  • Login/logout endpoints
  • Refresh token mechanism
  • Basic authorization

Phase 3: Multi-tenancy & Projects

  • Organization management
  • Project CRUD operations
  • User-project assignments
  • Role-based permissions
  • API documentation (OpenAPI)

Phase 4: Forms & Data Collection

  • Form builder (XLSForm support)
  • Form versioning
  • Submission endpoints
  • File upload handling
  • GPS data capture

Phase 5: Advanced Features

  • Offline sync logic
  • Notifications system
  • Comments and collaboration
  • Data export functionality
  • Audit logging

Phase 6: Mobile Integration

  • Mobile app API optimization
  • Real-time sync improvements
  • Media handling optimization
  • Performance tuning

Phase 7: Production Ready

  • Comprehensive testing (>80% coverage)
  • Security audit
  • Performance optimization
  • Production deployment guide
  • v1.0 Release

See our detailed roadmap for more information.

Development Status

Current Focus

We're currently in Phase 1: Foundation. Here's what we're working on:

  • Project structure
  • Documentation
  • Database schema
  • Development environment
  • API design

Next Steps

  1. Complete database models
  2. Setup Docker development environment
  3. Implement authentication system
  4. Build first API endpoints

Documentation

For Contributors

For Users

Community

Get in Touch

Code of Conduct

We are committed to providing a welcoming and inclusive environment. Please read our Code of Conduct.

Project Stats

GitHub stars GitHub forks GitHub watchers

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Why Apache 2.0?

We chose Apache 2.0 because it:

  • Allows commercial use
  • Permits modification and distribution
  • Provides patent protection
  • Requires attribution
  • Is widely recognized and trusted

Acknowledgments

This project is inspired by existing data collection tools and built with modern technologies:

Support the Project

If you find Zoka useful, please consider:

  • Starring the repository
  • Reporting bugs
  • Suggesting features
  • Sharing with others
  • Contributing code
  • Improving documentation

Vision

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

Quick Links


Back to top

Made with by the Zoka community

Let's build something amazing together!

About

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.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published