Welcome to the Eth Storage Music Project, an innovative platform designed to store and manage music files using blockchain technology. This project utilizes Go microservices and integrates with decentralized storage solutions to provide a secure and scalable infrastructure for music management.
This project is part of the second test activity for Eth Storage, focusing on the seamless integration of music management with blockchain technology. It consists of three main microservices:
- Gateway Service
- User Service
- Music Service
- Programming Language: Go
- Framework: Gin
- Microservices: Go-Micro
- Storage Solutions: Arweave (via the jrys library)
- Database: MySQL (via GORM)
- Configuration Management: INI
- Message Broker: RabbitMQ (via AMQP)
- Authentication: JWT
- Registry: Etcd
- Caching: Redis
- Serialization: JSON (via goccy/go-json)
- Protobuf: Google Protocol Buffers
The Gateway Service acts as the entry point for all client requests. It handles routing and forwarding of requests to the appropriate services (User Service and Music Service).
The User Service manages all user-related functionalities, including:
- Login and Registration: Users can sign up and log in using their wallet addresses.
- Post Management: Users can create and manage posts.
The Music Service handles all music-related functionalities, including:
- Music Upload: Upload audio files to Arweave using the jrys library.
- Music Download: Support downloading of audio files.
- NFT Management: Store and manage NFT information corresponding to each music file.
- select your environment
$env:APP_ENV = "dev"
- start the services
go run ./cmd/${service_name}/main.go
- Go 1.16 or higher
- Docker (optional, for containerized deployment)
- An Arweave wallet and access to the jrys library