Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

31 Commits

Folders and files

Repository files navigation

Twitter Clone (Next.js + NestJS)

Full-stack Twitter/X-клон изграден со Next.js (App Router) фронтенд и NestJS + Prisma бекенд. Вклучува автентикација, профили, објави, следења, лајкови, коментари, нотификации и S3-компатибилни прикачувања на медиуми (MinIO во dev).


Предуслови

Инсталирајте ги следните алатки пред да го стартувате проектот:

  • Node.js 18+ (20+ препорачано)
  • pnpm 9+
  • Docker + Docker Compose v2
  • Git

Брзо стартување (препорачано)

Linux / macOS

chmod +x start-dev.sh
./start-dev.sh

Windows

start-dev.bat

Што прави ова:

  • Стартува PostgreSQL + MinIO преку Docker Compose
  • Инсталира зависности доколку недостасуваат
  • Го ресетира DB и ги извршува Prisma миграциите (dev/demo погодност; ги брише старите податоци)
  • Го стартува бекендот (кој автоматски seed-ира демо податоци при стартување)
  • Го стартува фронтендот

Сервиси и порти


🔐 Стандардни креденцијали за најава

Сите тест корисници го користат истиот пасворд:

Password: password123

Изберете било кое корисничко име:

  • @alice - Software Engineer (Корисничко име: alice)
  • @bob - Product Manager (Корисничко име: bob)
  • @carol - Designer (Корисничко име: carol)
  • @david - Data Scientist (Корисничко име: david)
  • @emma - Full-stack Developer (Корисничко име: emma)
  • @frank - DevOps Engineer (Корисничко име: frank)
  • @grace - Frontend Specialist (Корисничко име: grace)
  • @henry - Backend Architect (Корисничко име: henry)
  • @iris - Mobile Developer (Корисничко име: iris)
  • @jack - Security Researcher (Корисничко име: jack)

📊 Што е seed-ирано

Базата доаѓа претходно наполнета со:

Ставка Количина
Кориснички акаунти 10
Оригинални објави 30+
Одговори/Коментари 50+
Цитати/Репостови 40+
Лајкови 200+
Следења 50+
Блокирања 5-10

Рачно подесување (ако е потребно)

1) Стартувај инфраструктура (Postgres + MinIO)

Чекор по чекор

docker compose up -d

# Optional: verify
docker ps

# 2. Backend
cd backend
pnpm install
pnpm prisma migrate reset --force

# Start backend (dev)
pnpm run start:dev

# 3. Frontend (во друг терминал)
cd ../frontend
pnpm install
pnpm run dev

Environment Variables

Овој репозиториум користи едноставни .env датотеки.

Клучни променливи:

  • Backend: DATABASE_URL, JWT_SECRET, PORT (стандардно 8000, configurable in backend/.env), MinIO/S3 подесувања

  • Frontend: NEXT_PUBLIC_API_BASE_URL (стандардно http://localhost:3001)

  • Frontend: NEXT_PUBLIC_API_BASE_URL (стандардно http://localhost:8000, update if you change backend PORT)


Технолошки стек

  • Frontend: Next.js 16 (App Router), React 19, Tailwind CSS
  • State/Data: TanStack React Query, едноставен Auth context
  • Backend: NestJS 11, Prisma ORM
  • Database: PostgreSQL 15
  • Media: MinIO (S3-компатибилен) со presigned upload flow

🔄 Database Schema

Клучни табели:

  • users - User accounts & profiles
  • user_settings - User preferences (theme, etc.)
  • posts - All posts, replies, quotes, reposts
  • post_likes - Like relationships
  • follows - Follow relationships
  • blocks - User blocks
  • mutes - User mutes
  • bookmarks - Saved posts
  • media - Uploaded images
  • comments - Comments on posts
  • notifications - User notifications

Видете backend/prisma/schema.prisma за целата шема.


🚦 Development Workflow

Промени во Backend

cd backend

# Edit files in src/
pnpm run start:dev  # Hot reload

# Type check/build
pnpm run build

Промени во Frontend

cd frontend

# Edit files in src/
pnpm run dev  # Hot reload in browser

# Build for production
pnpm run build

🛑 Запирање на сè

Linux / macOS

# Press Ctrl+C in the terminal
# Or in another terminal:
docker compose down

Windows

Само затворете ги командните прозорци што се отворија


🔌 Environment Variables

Backend (.env)

DATABASE_URL="postgresql://postgres:postgres@localhost:5432/twitter_clone"
JWT_SECRET="your-secret-key"
JWT_EXPIRATION_MINUTES="15"
NODE_ENV="development"

Frontend (.env.local)

NEXT_PUBLIC_API_BASE_URL="http://localhost:3001"

📚 Дополнителни скрипти

Рачно seed-ирање на базата

cd backend
pnpm tsx src/seed.ts

Изврши миграции

cd backend
pnpm prisma migrate dev

🎨 Прилагодување

Промена на seed податоците

Уредете backend/src/seed.ts:

  • Изменете USER_PROFILES за различни корисници
  • Прилагодете SAMPLE_POSTS за различна содржина
  • Променете количини на интеракции во seed функциите

Додавање на environment-специфични подесувања

Креирајте .env.production или .env.test датотеки

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages