This repository contains the backend services for TinyX, a distributed micro-blogging platform. The backend is built with Quarkus, following a microservices architecture.
- User & Post Management
- Social interactions (likes, follows, blocking)
- Search & Indexing
- Scalable, high-availability backend
- Java 17
- Quarkus (High-performance Java framework)
- MongoDB (Document storage)
- ElasticSearch (Search and indexing)
- Neo4j (Graph database for social connections)
- Redis (Message queue)
- REST API with JAX-RS
- JUnit & Testcontainers (Testing)
-
Clone the repository:
git clone https://github.com/your-org/tinyx-backend.git cd tinyx-backend -
Install dependencies and build:
mvn clean package
-
Run the application:
java -jar target/quarkus-app-runner.jar
API runs on http://localhost:8080.
- Post Service → Manages posts (MongoDB)
- Social Service → Handles likes, follows, blocks (Neo4j)
- Search Service → Indexes posts (ElasticSearch)
- User Timeline Service → Manages personal timelines
- Home Timeline Service → Aggregates posts from followed users
Create a .env file with the following environment variables:
MONGO_URI=mongodb://localhost:27017/tinyx
ELASTICSEARCH_URI=http://localhost:9200
NEO4J_URI=bolt://localhost:7687
REDIS_URI=redis://localhost:6379All REST endpoints across the microservices are fully specified in a centralized OpenAPI file, providing comprehensive visibility, streamlined client generation, and easier integration.
- Post Service (8081)
- Social Service (8082)
- Auth Service (8083)
- User Timeline Service (8084)
- Search Service (8085)
The global OpenAPI file (
openapi.yml) is located at the root of the project. It aggregates the API specifications of all services and can be used for client generation (viaopenapi-generator), validation, or integration with developer portals.
MIT License