An open API service indexing awesome lists of open source software.

https://github.com/mkornajcik/echo

Modern Twitter-like social media app built with Node.js, TypeScript, Express, and EJS.
https://github.com/mkornajcik/echo

aws-s3 docker ejs expressjs javascript jwt-authentication nodejs postgresql prisma supabase typescript

Last synced: 3 months ago
JSON representation

Modern Twitter-like social media app built with Node.js, TypeScript, Express, and EJS.

Awesome Lists containing this project

README

          

# Echo

Echo is a modern, Twitter-like social media app built with TypeScript, Node.js, Express, and EJS. Host your data on Supabase, assets on AWS S3, and deploy the app seamlessly on Railway.

---

## πŸ“‹ Table of Contents

1. [✨ Features](#-features)
2. [πŸ› οΈ Tech Stack](#️-tech-stack)
3. [πŸ–ΌοΈ Screenshots & Demo](#️-screenshots--demo)
4. [πŸš€ Getting Started](#-getting-started)
- [Prerequisites](#prerequisites)
- [Environment Variables](#environment-variables)
- [Docker Setup](#docker-setup)
5. [βš™οΈ Usage](#️-usage)
6. [πŸ“– API Documentation](#-api-documentation)
7. [🌐 Architecture & Hosting](#-architecture--hosting)
8. [πŸ“„ License](#-license)
9. [βœ‰οΈ Contact](#️-contact)

---

## ✨ Features

- πŸ”„ **Real-Time Messaging** & live feed updates
- πŸ‘₯ **Follow / Unfollow** users
- πŸ“° **Personalized Feed**
- πŸ”” **Notifications** for mentions, likes, reposts
- πŸ‘€ **User Profiles** with bio, posts, followers
- πŸ” **Search** posts and users

---

## πŸ› οΈ Tech Stack

- **Backend:** TypeScript β€’ Node.js β€’ Express
- **Templating:** EJS
- **Database:** PostgreSQL (Supabase) β€’ Prisma ORM
- **Storage:** AWS S3 Buckets
- **HTTP Client:** Axios
- **Containerization:** Docker
- **Hosting:** Railway (app), Supabase (DB), AWS S3 (assets)

---

## πŸ–ΌοΈ Screenshots & Demo
![HomePage](https://github.com/user-attachments/assets/065390e8-77d0-498c-95f4-d4f611d53210)
![ProfilePage](https://github.com/user-attachments/assets/d310ff18-1ddf-422f-b4c9-565ffb88bb80)

## πŸš€ Getting Started
### Prerequisites
- Docker & Docker Compose
- A Supabase project (with your Prisma schema pushed)
- AWS S3 bucket credentials
- Railway account

### Environment Variables
Create a .env file in your project root and set the following:
```
DATABASE_URL=…
PORT=…
JWT_SECRET=…
JWT_EXPIRES_IN=…
JWT_COOKIE_EXPIRES_IN=…
NODE_ENV=production
CLIENT_URL=…
COOKIE_SECRET=…
AWS_ACCESS_KEY_ID=…
AWS_SECRET_ACCESS_KEY=…
AWS_REGION=…
S3_BUCKET_NAME=…
```

### Docker Setup
1. Build & start containers:
```
docker-compose up --build -d
```
2. Run migrations:
```
docker-compose exec app npx prisma migrate deploy
```
3. Access:
- App at http://localhost:``

- Supabase DB via Supabase Dashboard

## βš™οΈ Usage

- Build the code & copy assets: npm run build
- Start the server: npm start
Your server will run on the port you configured (default 3000).

## πŸ“– API Documentation

Every endpoint, request schema, and response example is documented here:
https://documenter.getpostman.com/view/35992979/2sB2jAd9BZ

## 🌐 Architecture & Hosting

- **Railway** β€” Deploys and hosts the Node.js/Express application
- **Supabase** β€” Managed PostgreSQL database for production data
- **AWS S3** β€” Stores user‑uploaded files & media assets

## πŸ“„ License

This project is licensed under the **MIT License**.

## βœ‰οΈ Contact

Marko Kornajčík
βœ‰οΈ marko.kornajcik6@gmail.com