- Set up pnpm workspace with frontend (React + Vite) and backend (Express + Prisma) - Configure TypeScript, ESLint, and Prettier - Add Prisma schema for database models (User, Course, Lesson, Progress, etc.) - Create basic frontend structure with Tailwind CSS and shadcn/ui - Add environment configuration files - Update README with project overview and setup instructions - Complete Phase 0: Project initialization
5.1 KiB
5.1 KiB
Phase 0: Project Setup - COMPLETED ✅
Date Completed: 2026-01-17
Summary
Phase 0 has been successfully completed. The project structure is now fully initialized with a working monorepo setup, frontend and backend applications, and all necessary development tools configured.
Deliverables Completed
1. ✅ Monorepo Structure with pnpm Workspaces
- Created root
package.jsonwith workspace scripts - Configured
pnpm-workspace.yaml - Set up concurrent development script for frontend + backend
2. ✅ Frontend (Vite + React + TypeScript)
- Initialized React 18 with TypeScript
- Configured Vite build tool
- Set up React Router for navigation
- Created basic Home page with "Hello World"
- Location:
packages/frontend/
3. ✅ Backend (Express + TypeScript)
- Initialized Express.js with TypeScript
- Created basic server with health check endpoint
- Configured CORS and security middleware (helmet)
- Set up hot reload with tsx watch
- Location:
packages/backend/
4. ✅ Prisma with MySQL
- Created complete database schema with all models:
- User (authentication)
- Term, TermMedia, TermExample (dictionary)
- Document, DocumentPage, Sentence, SentenceToken (znakopis)
- Comment, BugReport (community)
- Configured all enums (WordType, CefrLevel, MediaKind, Visibility, BugStatus)
- Set up fulltext search indexes
- Created seed script template
- Location:
packages/backend/prisma/
5. ✅ Tailwind CSS and shadcn/ui
- Configured Tailwind CSS with custom theme
- Set up CSS variables for theming
- Created utility function (
cn) for class merging - Configured PostCSS and Autoprefixer
- Ready for shadcn/ui component installation
6. ✅ ESLint, Prettier, and TypeScript Configs
- TypeScript strict mode enabled for both packages
- ESLint configured for React and Node.js
- Prettier configured with consistent formatting rules
- Type checking scripts available
7. ✅ Environment Variable Templates
- Created
.env.examplefor backend with:- Server configuration
- MySQL database URL (pointing to 192.168.1.74)
- Session secrets
- OAuth credentials placeholders
- File upload settings
- Created
.env.examplefor frontend
8. ✅ Git Repository and .gitignore
- Comprehensive
.gitignoreconfigured - Excludes node_modules, dist, .env files
- Excludes uploads directory
- Preserves migrations folder structure
9. ✅ Project Compiles and Runs
- Frontend builds successfully
- Backend builds successfully
- TypeScript compilation passes with no errors
- Both packages pass type checking
Verification Results
Backend
✅ Server running on http://localhost:3000
✅ Health check: GET /api/health returns {"status":"ok"}
✅ TypeScript compilation: PASSED
✅ Build: PASSED
Frontend
✅ Development server: http://localhost:5173
✅ TypeScript compilation: PASSED
✅ Build: PASSED (159.08 kB gzipped)
Project Structure
znakovni/
├── packages/
│ ├── frontend/ # React + Vite application
│ │ ├── src/
│ │ │ ├── components/
│ │ │ ├── pages/
│ │ │ ├── stores/
│ │ │ ├── lib/
│ │ │ └── types/
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── vite.config.ts
│ │ ├── tailwind.config.js
│ │ └── tsconfig.json
│ │
│ └── backend/ # Express + TypeScript API
│ ├── src/
│ │ ├── routes/
│ │ ├── controllers/
│ │ ├── middleware/
│ │ ├── services/
│ │ └── server.ts
│ ├── prisma/
│ │ ├── schema.prisma
│ │ ├── seed.ts
│ │ └── migrations/
│ ├── uploads/
│ ├── package.json
│ └── tsconfig.json
│
├── package.json # Root workspace config
├── pnpm-workspace.yaml
├── .gitignore
├── .prettierrc
├── README.md
└── main-plan.md
Next Steps (Phase 1)
The project is now ready for Phase 1: Core Infrastructure
Phase 1 Goals:
- Implement authentication system (Passport.js)
- Set up session management
- Create auth routes (register, login, logout)
- Implement Google and Microsoft OAuth
- Build layout components (Sidebar, Header)
- Create protected routes
- Add user profile management
Commands Reference
# Install dependencies
pnpm install
# Generate Prisma Client
cd packages/backend && npx prisma generate
# Run development servers (both frontend + backend)
pnpm dev
# Build for production
pnpm build
# Type checking
pnpm type-check
# Linting
pnpm lint
# Format code
pnpm format
# Database migrations
cd packages/backend
npx prisma migrate dev
npx prisma db seed
npx prisma studio
Notes
- MySQL server is configured at 192.168.1.74
- Database connection string needs to be configured in
packages/backend/.env - OAuth credentials need to be added for Google and Microsoft authentication
- All TypeScript is in strict mode
- Hot reload is enabled for both frontend and backend