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
This commit is contained in:
@@ -0,0 +1,143 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user