Full-stack Twitter/X-клон изграден со Next.js (App Router) фронтенд и NestJS + Prisma бекенд. Вклучува автентикација, профили, објави, следења, лајкови, коментари, нотификации и S3-компатибилни прикачувања на медиуми (MinIO во dev).
Инсталирајте ги следните алатки пред да го стартувате проектот:
- Node.js 18+ (20+ препорачано)
- pnpm 9+
- Docker + Docker Compose v2
- Git
chmod +x start-dev.sh
./start-dev.shstart-dev.batШто прави ова:
- Стартува PostgreSQL + MinIO преку Docker Compose
- Инсталира зависности доколку недостасуваат
- Го ресетира DB и ги извршува Prisma миграциите (dev/demo погодност; ги брише старите податоци)
- Го стартува бекендот (кој автоматски seed-ира демо податоци при стартување)
- Го стартува фронтендот
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- Backend health: http://localhost:8000/health
Сите тест корисници го користат истиот пасворд:
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)
Базата доаѓа претходно наполнета со:
| Ставка | Количина |
|---|---|
| Кориснички акаунти | 10 |
| Оригинални објави | 30+ |
| Одговори/Коментари | 50+ |
| Цитати/Репостови | 40+ |
| Лајкови | 200+ |
| Следења | 50+ |
| Блокирања | 5-10 |
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Овој репозиториум користи едноставни .env датотеки.
- Backend: копирајте backend/.env.example во
backend/.env - Frontend: копирајте frontend/.env.example во
frontend/.env.local
Клучни променливи:
-
Backend:
DATABASE_URL,JWT_SECRET,PORT(стандардно8000, configurable inbackend/.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 backendPORT)
- 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
Клучни табели:
- 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 за целата шема.
cd backend
# Edit files in src/
pnpm run start:dev # Hot reload
# Type check/build
pnpm run buildcd frontend
# Edit files in src/
pnpm run dev # Hot reload in browser
# Build for production
pnpm run build# Press Ctrl+C in the terminal
# Or in another terminal:
docker compose downСамо затворете ги командните прозорци што се отворија
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/twitter_clone"
JWT_SECRET="your-secret-key"
JWT_EXPIRATION_MINUTES="15"
NODE_ENV="development"NEXT_PUBLIC_API_BASE_URL="http://localhost:3001"cd backend
pnpm tsx src/seed.tscd backend
pnpm prisma migrate devУредете backend/src/seed.ts:
- Изменете
USER_PROFILESза различни корисници - Прилагодете
SAMPLE_POSTSза различна содржина - Променете количини на интеракции во seed функциите
Креирајте .env.production или .env.test датотеки