Files
CollabTable/README.md
T
Gabriel20xx 9aa7ed8878 feat: Implement list management routes with CRUD operations
feat: Add sync routes for data synchronization between client and server

feat: Create web routes for serving UI and data visualization

chore: Configure TypeScript for the server project

docs: Update README with project overview, features, and setup instructions

docs: Add server setup implementation details for first-run configuration

docs: Summarize updates and changes in the project, including new features and enhancements
2025-10-24 20:27:18 +02:00

3.4 KiB

CollabTable

A collaborative list management system with Android app and server for creating and managing shared lists with custom fields and items.

Overview

CollabTable allows multiple users to collaboratively create and manage lists with custom fields. Perfect for:

  • Shopping lists with price tracking
  • Product catalogs
  • Task management with custom attributes
  • Any structured data collection

Features

Android

  • Beautiful Material 3 design with dynamic colors
  • 📱 Native Android app with Jetpack Compose
  • 💾 Offline-first with Room database
  • 🔄 Automatic synchronization with server
  • 🎨 Custom fields (name, link, price, category, etc.)
  • ✏️ Real-time editing of items
  • 🗑️ Soft delete support
  • ⚙️ Configurable server URL in settings

Server

  • 🚀 Express.js REST API with TypeScript
  • 🐳 Fully containerized with Docker
  • 💾 SQLite database with persistent storage
  • 🔄 Sync protocol for conflict resolution
  • 📊 Complete CRUD operations

Quick Start

Server (Docker)

cd CollabTableServer
docker-compose up -d

Server runs on http://localhost:3000

Android App

  1. Open CollabTableAndroid in Android Studio
  2. Wait for Gradle sync
  3. Run on emulator or device
  4. Go to Settings (gear icon) to configure server URL
    • For emulator: http://10.0.2.2:3000/api/
    • For physical device: http://YOUR_COMPUTER_IP:3000/api/

Project Structure

CollabTable/
├── CollabTableAndroid/    # Android app
│   ├── app/
│   │   ├── src/main/java/com/collabtable/app/
│   │   │   ├── data/      # Database, API, repositories
│   │   │   └── ui/        # Compose UI, screens, theme
│   │   └── build.gradle
│   └── README.md
│
└── CollabTableServer/     # Node.js server
    ├── src/
    │   ├── models/        # MongoDB models
    │   └── routes/        # API endpoints
    ├── Dockerfile
    ├── docker-compose.yml
    └── README.md

Technology Stack

Android

  • Kotlin
  • Jetpack Compose
  • Material 3
  • Room Database
  • Retrofit
  • Coroutines & Flow

Server

  • Node.js
  • Express
  • TypeScript
  • SQLite (Sequelize ORM)
  • Docker

API Endpoints

  • GET/POST /api/lists - Manage lists
  • GET/POST /api/fields - Manage fields
  • GET/POST /api/items - Manage items
  • POST /api/sync - Synchronize data
  • GET /health - Health check

See Server README for detailed API documentation.

Development

Android Development

cd CollabTableAndroid
# Open in Android Studio

Server Development

cd CollabTableServer
npm install
npm run dev

Data Model

List

Contains multiple fields and items

Field

Defines a column/attribute (name, price, category, etc.)

Item

A row in the list with values for each field

ItemValue

The actual value for a specific field of an item

Synchronization

The sync protocol uses timestamps to determine which changes to apply:

  1. Client sends all local changes since last sync
  2. Server merges changes and returns server-side updates
  3. Client applies server updates locally
  4. Latest timestamp wins in conflicts

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.