A modern, high-performance micro-blogging platform (Twitter clone) designed for speed and simplicity. Brevity allows users to share short, 280-character updates and view a reverse-chronological timeline of posts.
- Features
- Technologies Used
- Prerequisites
- Installation & Setup
- Usage
- Architecture
- Contributing
- License
- Micro-blogging: Compose and publish posts up to 280 characters.
- Real-time Timeline: View a reverse-chronological feed of the latest posts.
- Containerized Environment: Fully dockerized stack for seamless local development and deployment.
- Infrastructure as Code: Ready for AWS production deployment using Terraform.
- CI/CD Pipelines: Automated linting, building, and testing via GitHub Actions.
Frontend
- React 18
- TypeScript
- Vite
- Tailwind CSS
Backend
- Go (1.22+)
- Custom routing and API handlers
Infrastructure & DevOps
- Docker & Docker Compose
- PostgreSQL & Redis (Configured via infrastructure)
- Nginx (Frontend serving)
- Terraform (AWS Deployment)
- GitHub Actions
To run this project locally, ensure you have the following installed:
- Docker
- Docker Compose
- Make (Optional, but recommended for shortcut commands)
-
Clone the repository:
git clone https://github.com/mtepenner/brevity-sharing.git cd brevity-sharing -
Set up environment variables: Copy the example environment file in the infrastructure folder:
cp infrastructure/.env.example infrastructure/.env
-
Spin up the stack: You can easily start the entire application using the provided Makefile:
make up
(Alternatively, run:
docker-compose -f infrastructure/docker-compose.yml --env-file infrastructure/.env up -d) -
Rebuild after changes: If you modify the Go or React code, rebuild the images:
make build
-
Tear down the stack:
make down
Once the Docker containers are running, you can access the application components at the following local endpoints:
- Frontend UI: http://localhost
- Backend API: http://localhost:8080/api
GET /api/timeline- Fetch the timeline feed.POST /api/tweets- Create a new post.
Brevity uses a multi-container architecture. The Go API handles business logic and interfaces with PostgreSQL and Redis. The React frontend is built statically via Vite and served blazingly fast using Nginx.
Contributions are welcome! If you'd like to help improve Brevity, please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request using the provided PR template.
Please review our Bug Report template if you encounter any issues.
Distributed under the MIT License. See LICENSE for more information.