Litter is a (backend-only for now) API for a Twitter-like social media site. Built with Spring Boot, MongoDB, and enough cloud infrastructure to make me cry when I get my monthly Azure bill.
Tip
TL;DR: It's like Twitter, but smaller.
And better.
It deploys itself to Azure AKS with one Terraform command (almost).
Want to run it? Skip to the deployment section.
- Features
- Tech Stack
- Deployment Instructions
- API Documentation
- Project Structure
- Infrastructure
- License
- Acknowledgments
- Reactive Spring Boot backend with WebFlux
- Token-based authentication with JWT
- Message publishing and subscription system
- Automated deployment to Azure AKS
- Full CI/CD pipeline with GitHub Actions
- Comprehensive test suite with JUnit 5
- Infrastructure as Code with Terraform
- Kubernetes deployment via Helm chart
- Docker Compose for local development
- API documentation with Postman
Category | Technologies |
---|---|
Backend | Spring Boot, WebFlux |
Frontend | N/A (maybe later if I still care — I've been messing about with a possible Angular front end) |
Database | MongoDB 8.x via Spring Data (Reactive) |
Cloud Platform | Azure: Azure Kubernetes Service (AKS), Key Vault, DNS Zone |
Infrastructure | Terraform, Helm, Kubernetes, Docker |
Build Tools | Gradle, GitHub Actions |
Testing | JUnit 5, TestContainers, Postman |
Security | JWT, Azure Key Vault, TLS/SSL, Argon2 password hashing (Spring Security) |
Pick your deployment method:
- Terraform (Recommended) - Full cloud deployment
- Helm - Manual Kubernetes deployment
- Docker Compose - Local development
While the site is online (see status badge at the top of this README), you can access the API documentation via the built-in Swagger UI.
litter
├── chart/ # Helm templates and values
│
├── compose/ # Docker Compose files
│
├── src/
│ ├── main/ # Application source code
│ └── test/ # Unit and integration tests
│
├── terraform/ # IaC configuration
│
├── build.gradle # Gradle build file
├── gradle.properties # Gradle properties
├── settings.gradle # Gradle settings
│
├── Dockerfile # Docker build file
│
└── README.md # Wait a minute...this is pretty meta
This project is licensed under the GNU General Public License v3.0 in case someone wants to clone this for some reason; see the LICENSE file for details.
- My caffeine addiction, for making this possible
- The Azure free tier, for not bankrupting me during development
- The original Twitter, for being so bad that I had to try to make my own
Important
Found a bug? Have a feature request? Just want to let me know that more than 2 eyeballs have seen this? Open an issue!