https://github.com/ihkaru/cerdas
Open-source, self-hosted AppSheet alternative. Build offline-first mobile apps for data collection without code. Unlimited users, Docker-ready, and powered by Vue & Laravel
https://github.com/ihkaru/cerdas
android appsheet-alternative capacitor data-collection docker form-builder frankenphp laravel no-code offline-first pwa self-hosted vue
Last synced: 2 months ago
JSON representation
Open-source, self-hosted AppSheet alternative. Build offline-first mobile apps for data collection without code. Unlimited users, Docker-ready, and powered by Vue & Laravel
- Host: GitHub
- URL: https://github.com/ihkaru/cerdas
- Owner: ihkaru
- License: mit
- Created: 2026-01-18T00:42:30.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-04-13T13:50:57.000Z (2 months ago)
- Last Synced: 2026-04-13T14:25:07.793Z (2 months ago)
- Topics: android, appsheet-alternative, capacitor, data-collection, docker, form-builder, frankenphp, laravel, no-code, offline-first, pwa, self-hosted, vue
- Language: Vue
- Homepage:
- Size: 24 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Audit: audit-deployment.bat
- Security: SECURITY.md
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# π§ Cerdas
### Open-Source Self-Hosted AppSheet Alternative
**Build, deploy, and manage mobile data collection apps β no code required.**
[](https://opensource.org/licenses/MIT)
[](https://laravel.com)
[](https://vuejs.org)
[](https://frankenphp.dev)
[](https://github.com/ihkaru/cerdas/actions/workflows/build-android.yml)
[](https://github.com/ihkaru/cerdas/actions/workflows/octane-audit.yml)
[Download APK](https://github.com/ihkaru/cerdas/releases/latest) Β· [Quick Start](QUICKSTART.md) Β· [Documentation](docs/) Β· [Roadmap](ROADMAP.md)
---
## Why Cerdas?
Most no-code platforms come with **heavy restrictions**. Cerdas was born out of the frustration with AppSheet's limit of **only 10 users** for the free tier.
| | AppSheet | KoboToolbox | **Cerdas** |
|-------------------|----------------|-------------|-------------------------|
| **Self-Hosted** | β | β
| β
|
| **User Limit** | 10 (free) | Unlimited | **Unlimited** |
| **Offline-First** | Partial | β | β
|
| **Custom Hosting**| β | Complex | **Docker one-click** |
| **Monthly Cost** | $10/user | Free | **Free** |
## Key Features
- **π± Offline-First Mobile Client** β Built with Framework7 + Capacitor. Operates fully offline using SQLite and syncs data when connectivity is restored.
- **π οΈ Visual Form Editor** β Web-based builder for complex schemas, with support for nested forms, repeating groups, conditional fields, and dynamic options.
- **π§ JS Expression Engine** β Write custom JavaScript closures directly in the editor to control validation (`Warning`), field visibility (`Show If`), edit access (`Editable If`), pre-calculated values (`Formula`), and default values (`Initial Value`).
- **π Bi-directional Sync** β Background synchronization with conflict handling for large datasets and binary media attachments.
- **πΊοΈ GPS + Map** β Native coordinate capture with accuracy metadata and offline-capable map previews via MapLibre GL.
- **π Data Export** β Export submissions to Excel/CSV for downstream analysis.
- **π Role-Based Access** β Granular RBAC via Spatie Laravel Permission.
- **β‘ High-Throughput Backend** β Laravel Octane with FrankenPHP worker mode for sustained high concurrency.
- **π€ Automated CI/CD** β GitHub Actions for APK builds, Octane safety audits, code quality checks, and secret scanning.
## Architecture
```text
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Monorepo (pnpm workspaces) β
ββββββββββββββββ¬βββββββββββββββ¬βββββββββββββββ¬βββββββββββββ€
β apps/client β apps/editor β apps/backend β packages/ β
β Mobile PWA β Web Editor β Laravel API β Shared β
β Vue 3 + F7 β Vue 3 + F7 β Octane + β Libs β
β Capacitor β β FrankenPHP β β
ββββββββββββββββ΄βββββββββββββββ΄βββββββ¬ββββββββ΄βββββββββββββ€
β Docker Compose β GitHub Actions β
β FrankenPHP Β· Redis Β· MySQL β APK Build Β· Audit β
ββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββ
```
| Layer | Technology | Purpose |
|-------|-----------|---------|
| **API Server** | Laravel 12 + Octane + FrankenPHP | High-performance API (worker mode) |
| **Mobile Client** | Vue 3 + Framework7 + Capacitor | Offline-first PWA / Android APK |
| **Form Editor** | Vue 3 + Framework7 | No-code visual form builder |
| **Shared Packages** | TypeScript | Form engine, expression engine |
| **Database** | MySQL (server) Β· SQLite (client) | Server-side + offline-first storage |
| **Auth** | Laravel Sanctum + Google OAuth | Token-based API authentication |
| **CI/CD** | GitHub Actions | APK builds, audits, quality checks |
| **Deployment** | Docker Compose + Coolify | One-click self-hosted deployment |
## Quick Start
### Prerequisites
- **PHP 8.2+** with `pcntl` extension
- **Node.js 22+**
- **pnpm** (`npm install -g pnpm`)
- **Composer**
- **Docker** (for the Docker-based workflow)
### Option A β Docker (Recommended)
```bash
git clone https://github.com/ihkaru/cerdas.git
cd cerdas
# Start all services (Backend + Client + Editor) in Docker
./start-dev-docker.sh
```
### Option B β Local Setup
```bash
git clone https://github.com/ihkaru/cerdas.git
cd cerdas
# Install all dependencies
pnpm install
# Setup backend
cd apps/backend
composer install
cp .env.example .env
php artisan key:generate
php artisan migrate
cd ../..
# Start all services (Windows)
./start-all.bat
# Start all services (Linux/Mac)
./start-all.sh
```
### Verification
Run this before pushing to ensure the build is clean.
```bash
# Linux / Mac
./verify-local.sh
# Windows (PowerShell)
./verify-local.ps1
```
### Production (Docker)
```bash
docker compose -f docker-compose.prod.yml up -d
```
> See [Coolify Deployment Guide](COOLIFY_GUIDE.md) for managed hosting setup.
## Project Structure
```
cerdas/
βββ apps/
β βββ backend/ # Laravel 12 API (Octane + FrankenPHP)
β βββ client/ # Mobile PWA (Vue 3 + Framework7 + Capacitor)
β βββ editor/ # Web Editor (Vue 3 + Framework7)
βββ packages/
β βββ form-engine/ # Shared form rendering library
β βββ expression-engine/ # JS expression evaluator for dynamic field logic
βββ scripts/ # Automation & audit scripts
βββ .github/workflows/ # CI/CD pipelines
βββ docker-compose.prod.yml
```
## CI/CD Pipelines
| Workflow | Trigger | Purpose |
|----------|---------|---------|
| **Build APK** | Push to `main` (client changes) | Auto-build signed APK β GitHub Releases |
| **Octane Audit** | Push to `main` (backend changes) | Detect memory leak patterns before deploy |
| **Code Quality** | Push to `main` (apps changes) | ESLint (Vue/TS) + Laravel Pint (PHP) |
| **Secret Scan** | Push to `main` (all) | Detect leaked credentials/keys |
## Security
- All secrets managed via GitHub Secrets / environment variables
- Automated credential leak detection via pre-commit hooks
- Octane-safe code patterns enforced by CI
## License
[MIT License](LICENSE) β free to use, modify, and distribute.
---
Built with β€οΈ for field data collection teams.