MeubleHub is a microservices-based application designed to help families manage and distribute belongings after a loved one's passing. The platform allows for systematic cataloging of items room by room, making the distribution process more organized and transparent.
The application helps families to:
- Create and manage homes
- Register rooms within each home
- Catalog objects/belongings
- Track object reservations by family members
- Manage user accounts and authentication
MeubleHub consists of four microservices:
-
Home Service (Port: 8081)
- Manages home entities
- Uses SQLite for data persistence
- Handles home creation and listing
-
Room Service (Port: 8082)
- Manages rooms within homes
- Uses SQLite for data persistence
- Links rooms to specific homes
-
Object Service (Port: 8080)
- Manages individual objects/belongings
- Uses DragonflyDB for data storage
- Handles object creation, listing, and reservation
-
User Service (Port: 8083)
- Manages user accounts and authentication
- Uses SQLite for data persistence
- Handles user registration and login
- Docker
- Docker Compose
- Git
- Clone the repository:
git clone https://github.com/your-username/meubleHub.git
cd meubleHub
- Create necessary data directories:
mkdir -p backend/home-service/data
mkdir -p backend/room-service/data
mkdir -p backend/user-service/data
- Create
.env
file in the root directory:
HOME_PORT=8081
HOME_DB_PATH=/app/data/home.db
OBJECT_PORT=8080
OBJECT_DRAGONFLY_HOST=dragonfly
OBJECT_DRAGONFLY_PORT=6379
ROOM_PORT=8082
ROOM_DB_PATH=/app/data/room.db
USER_PORT=8083
USER_DB_PATH=/app/data/user.db
- Build and start the services:
docker-compose up --build
POST /homes
- Create a new homeGET /homes
- List all homes
POST /rooms
- Create a new roomGET /rooms?home_id=<id>
- List rooms for a specific home
POST /objects
- Create a new objectGET /objects
- List all objectsPATCH /objects/:id/reserve
- Reserve an objectGET /objects/reserved
- List reserved objects
POST /users
- Create a new userPOST /login
- User loginGET /users
- List all users
- Create feature branches from main:
git checkout -b feature/your-feature-name
- Submit changes through Pull Requests
Each service includes unit tests and integration tests. Run tests for individual services:
cd backend/service-name
go test ./... -v
- SQLite databases are automatically created in the
data
directory of each service - DragonflyDB is used for object data and runs in a separate container
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
Current version: v0.1
- All services are tagged with version v0.1
- Docker images are named:
hexagon/service-name:v0.1
- SQLite databases are stored in volume mounts and should be backed up regularly
- Database files are in the
data
directory of each service
- Each service uses structured logging with logrus
- Logs can be viewed using
docker-compose logs service-name
Common issues and solutions:
-
Database connection issues:
- Ensure data directories exist and have proper permissions
- Check volume mounts in docker-compose.yml
-
Service connectivity:
- Verify all ports are correctly mapped
- Check network configuration in docker-compose.yml
-
DragonflyDB connection:
- Ensure DragonflyDB container is healthy
- Verify connection settings in object service
For any questions or support, please open an issue in the repository.