To build an online platform where artists can publish their works and users can view, like, and exchange artworks. The platform should be based on a scalable architecture and be easily deployable in the cloud.
Microservice-based, with gRPC communication between services.
-
User Service
- User registration and authentication
- Artist profile (name, avatar, bio, links)
- Roles: artist, viewer, admin
-
Art Service
- Artwork publishing (title, description, images, tags)
- Association with the user (creator)
- Moderation and publication status
-
Like/Interaction Service
- Likes, views, favorites
- Ability to follow artists
-
Exchange Service (optional)
- Exchange requests between users for artworks
- Statuses: pending, accepted, rejected
- Optional message/comment on the exchange
- Language: Go
- Framework: Chi
- Protocol: REST
- Database: PostgreSQL, Redis
- File storage: AWS S3 (optional)
- Containerization: Docker, orchestration — Kubernetes
- CI/CD: GitHub Actions
- Authentication: JWT
- Runner Task
- Sign up / log in
- Profile editing
- Upload and publish artwork
- Browse other artists’ galleries
- Like, follow, favorite
- Exchange artworks
- API documentation
- Testing (unit + integration)