{"id":28452013,"url":"https://github.com/mkornajcik/echo","last_synced_at":"2026-04-16T12:01:54.709Z","repository":{"id":293039479,"uuid":"982723894","full_name":"mkornajcik/echo","owner":"mkornajcik","description":"Modern Twitter-like social media app built with Node.js, TypeScript, Express, and EJS.","archived":false,"fork":false,"pushed_at":"2025-07-07T11:47:42.000Z","size":2052,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-03T06:37:39.506Z","etag":null,"topics":["aws-s3","docker","ejs","expressjs","javascript","jwt-authentication","nodejs","postgresql","prisma","supabase","typescript"],"latest_commit_sha":null,"homepage":"https://social-echo.up.railway.app/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkornajcik.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-13T10:07:46.000Z","updated_at":"2025-07-07T11:47:44.000Z","dependencies_parsed_at":"2025-06-21T18:20:53.646Z","dependency_job_id":"e782cf55-8496-41a3-bfe1-812fe77a529a","html_url":"https://github.com/mkornajcik/echo","commit_stats":null,"previous_names":["mkornajcik/echo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mkornajcik/echo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkornajcik%2Fecho","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkornajcik%2Fecho/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkornajcik%2Fecho/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkornajcik%2Fecho/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkornajcik","download_url":"https://codeload.github.com/mkornajcik/echo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkornajcik%2Fecho/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31884929,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T11:36:10.202Z","status":"ssl_error","status_checked_at":"2026-04-16T11:36:09.652Z","response_time":69,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-s3","docker","ejs","expressjs","javascript","jwt-authentication","nodejs","postgresql","prisma","supabase","typescript"],"created_at":"2025-06-06T17:10:20.950Z","updated_at":"2026-04-16T12:01:54.691Z","avatar_url":"https://github.com/mkornajcik.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Echo\n\nEcho 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.\n\n---\n\n## 📋 Table of Contents\n\n1. [✨ Features](#-features)  \n2. [🛠️ Tech Stack](#️-tech-stack)  \n3. [🖼️ Screenshots \u0026 Demo](#️-screenshots--demo)  \n4. [🚀 Getting Started](#-getting-started)  \n   - [Prerequisites](#prerequisites)  \n   - [Environment Variables](#environment-variables)  \n   - [Docker Setup](#docker-setup)  \n5. [⚙️ Usage](#️-usage)  \n6. [📖 API Documentation](#-api-documentation)  \n7. [🌐 Architecture \u0026 Hosting](#-architecture--hosting)  \n8. [📄 License](#-license)  \n9. [✉️ Contact](#️-contact)  \n\n---\n\n## ✨ Features\n\n- 🔄 **Real-Time Messaging** \u0026 live feed updates  \n- 👥 **Follow / Unfollow** users  \n- 📰 **Personalized Feed**  \n- 🔔 **Notifications** for mentions, likes, reposts  \n- 👤 **User Profiles** with bio, posts, followers  \n- 🔍 **Search** posts and users  \n\n---\n\n## 🛠️ Tech Stack\n\n- **Backend:** TypeScript • Node.js • Express  \n- **Templating:** EJS  \n- **Database:** PostgreSQL (Supabase) • Prisma ORM  \n- **Storage:** AWS S3 Buckets  \n- **HTTP Client:** Axios  \n- **Containerization:** Docker  \n- **Hosting:** Railway (app), Supabase (DB), AWS S3 (assets)  \n\n---\n\n## 🖼️ Screenshots \u0026 Demo\n![HomePage](https://github.com/user-attachments/assets/065390e8-77d0-498c-95f4-d4f611d53210)\n![ProfilePage](https://github.com/user-attachments/assets/d310ff18-1ddf-422f-b4c9-565ffb88bb80)\n\n## 🚀 Getting Started\n### Prerequisites\n- Docker \u0026 Docker Compose\n- A Supabase project (with your Prisma schema pushed)\n- AWS S3 bucket credentials\n- Railway account\n\n### Environment Variables\nCreate a .env file in your project root and set the following:\n```\nDATABASE_URL=…\nPORT=…\nJWT_SECRET=…\nJWT_EXPIRES_IN=…\nJWT_COOKIE_EXPIRES_IN=…\nNODE_ENV=production\nCLIENT_URL=…\nCOOKIE_SECRET=…\nAWS_ACCESS_KEY_ID=…\nAWS_SECRET_ACCESS_KEY=…\nAWS_REGION=…\nS3_BUCKET_NAME=…\n```\n\n### Docker Setup\n1. Build \u0026 start containers:\n```\ndocker-compose up --build -d\n```\n2. Run migrations:\n```\ndocker-compose exec app npx prisma migrate deploy\n```\n3. Access:\n  - App at http://localhost:`\u003cPORT\u003e`\n\n  - Supabase DB via Supabase Dashboard\n\n## ⚙️ Usage\n\n- Build the code \u0026 copy assets: npm run build\n- Start the server: npm start\nYour server will run on the port you configured (default 3000).\n\n## 📖 API Documentation\n\nEvery endpoint, request schema, and response example is documented here:\nhttps://documenter.getpostman.com/view/35992979/2sB2jAd9BZ\n\n## 🌐 Architecture \u0026 Hosting\n\n- **Railway** — Deploys and hosts the Node.js/Express application\n- **Supabase** — Managed PostgreSQL database for production data\n- **AWS S3** — Stores user‑uploaded files \u0026 media assets\n\n## 📄 License\n\nThis project is licensed under the **MIT License**.\n\n## ✉️ Contact\n\nMarko Kornajčík\n✉️ marko.kornajcik6@gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkornajcik%2Fecho","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkornajcik%2Fecho","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkornajcik%2Fecho/lists"}