Files
CollabTable/README.md
T

144 lines
3.4 KiB
Markdown
Raw Normal View History

# 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)
```bash
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](CollabTableServer/README.md) for detailed API documentation.
## Development
### Android Development
```bash
cd CollabTableAndroid
# Open in Android Studio
```
### Server Development
```bash
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.