c0c1c0bf354517f25c3b1fa6e130b382021cd860
fix: update placeholder in SettingsScreen to reflect new sync interval and enhance user clarity fix: implement date formatting function in webRoutes for consistent timestamp display
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
- Open
CollabTableAndroidin Android Studio - Wait for Gradle sync
- Run on emulator or device
- 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/
- For emulator:
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 listsGET/POST /api/fields- Manage fieldsGET/POST /api/items- Manage itemsPOST /api/sync- Synchronize dataGET /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:
- Client sends all local changes since last sync
- Server merges changes and returns server-side updates
- Client applies server updates locally
- Latest timestamp wins in conflicts
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Description
A collaborative list management system with Android app and server for creating and managing shared lists with custom fields and items.
658 KiB
Languages
Kotlin
84.7%
TypeScript
15.2%