Gabriel20xx 14c80197cc feat: add ESLint and Prettier configuration for code quality
- Added ESLint with TypeScript support and custom rules.
- Introduced Prettier for consistent code formatting.
- Updated package.json to include lint and format scripts.
- Modified db.ts to ensure proper parsing of BIGINT types from PostgreSQL.
- Enhanced webRoutes to coerce timestamp fields to numbers and format isDeleted as boolean.
2025-10-25 17:33:48 +02:00

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.

S
Description
A collaborative list management system with Android app and server for creating and managing shared lists with custom fields and items.
Readme
658 KiB
Languages
Kotlin 84.7%
TypeScript 15.2%