Developer Environment β ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ, Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (time tracking) ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ².
ΠΡΠΎΠ΅ΠΊΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ Ρ ΡΠΎΠΊΡΡΠΎΠΌ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠΈΡΡΡΠΉ UI ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±Π΅ΡΡΠΎΠ²Π½ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π³ΠΎΡΡΠ΅Π²ΠΎΠΉ Π΄ΠΎΡΡΡΠΏ.
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
- Π’ΡΠ΅ΠΊΠΈΠ½Π³ Π·Π°Π΄Π°Ρ (Task Management): Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠΎΠΌ Π·Π°Π΄Π°Ρ Π²Π½ΡΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
- Π£ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Time Entries): ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΡΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ Π·Π°Π΄Π°Ρ.
- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: ΠΠ°Π΄Π΅ΠΆΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π²Ρ ΠΎΠ΄Π° ΡΠ΅ΡΠ΅Π· Email/Password, Google ΠΈ GitHub (Π½Π° Π±Π°Π·Π΅ Better Auth), Π° ΡΠ°ΠΊΠΆΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ (Π³ΠΎΡΡΠ΅Π²ΡΠ΅) ΡΠ΅ΡΡΠΈΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π°.
- Π’Π΅ΠΌΠ½Π°Ρ/Π‘Π²Π΅ΡΠ»Π°Ρ ΡΠ΅ΠΌΠ°: ΠΠΎΠ»Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
next-themes.
- ΠΠ΅ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ° Π·Π°Π΄Π°ΡΠΈ: ΠΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠΊΡΠ°Π½ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Π·Π°ΠΌΠ΅ΡΠΎΠΊ ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎ Π·Π°Π΄Π°ΡΠ΅.
- Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ (Repository): ΠΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π²Π°ΠΆΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ½ΠΈΠΏΠΏΠ΅ΡΠΎΠ² ΠΈ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
- ΠΡΡΡΡΡΠ΅ ΡΡΡΠ»ΠΊΠΈ (Quick Links): ΠΠ°ΡΠ±ΠΎΡΠ΄ Ρ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΠΌΠΈ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ°ΠΌΠΈ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π²Π°ΠΆΠ½ΡΠΌ ΡΠ΅ΡΡΡΡΠ°ΠΌ.
- Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ: Next.js (App Router, Server Actions)
- ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ : PostgreSQL (via Supabase)
- ORM: Prisma
- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ: Better Auth
- Π€Π°ΠΉΠ»ΠΎΠ²ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅: Vercel Blob
- Π‘ΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ: Tailwind CSS v4
- UI ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ: Shadcn/ui
- Π€ΠΎΡΠΌΡ ΠΈ ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ: React Hook Form + Zod
- ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π°: ESLint, Prettier, TypeScript, Lefthook, TypeScript strict mode.
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅.
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ:
- Node.js (v20+)
- pnpm (ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°)
- PostgreSQL (Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΡΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Supabase)
ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ:
git clone https://github.com/shchurofff/developer_env.git
cd developer_env
pnpm installΠ‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» .env Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π² ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ· .env.example:
cp .env.example .envΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅ .env Π²Π°ΡΠΈΠΌΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ
ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ:
-
ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ (PostgreSQL / Supabase):
DATABASE_URL: Π‘ΡΡΠΎΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ .
DIRECT_URL: ΠΡΡΠΌΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
-
Vercel Blob:
BLOB_READ_WRITE_TOKEN: Π’ΠΎΠΊΠ΅Π½ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ².
-
Better Auth:
BETTER_AUTH_SECRET: Π‘Π»ΡΡΠ°ΠΉΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΠΈΠΉ.
BETTER_AUTH_URL: ΠΠ°Π·ΠΎΠ²ΡΠΉ URL ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΠΊΠΈ: http://localhost:3000).
-
OAuth ΠΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ (Google & GitHub):
ΠΠΎΠ»ΡΡΠΈΡΠ΅ CLIENT_ID ΠΈ CLIENT_SECRET Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° (Google Cloud Console ΠΈ GitHub Developer Settings).
Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠΉΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ Prisma ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
pnpm prisma generate
pnpm prisma db push
# ΠΈΠ»ΠΈ pnpm prisma migrate dev (Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΈΡΡΠΎΡΠΈΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ)ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ:
pnpm devΠΡΠ»ΠΈ Π²Π°ΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Zed, ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠ΅Π΄Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ (tasks) Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ°. ΠΠ½ΠΈ Π»Π΅ΠΆΠ°Ρ Π² ΡΠ°ΠΉΠ»Π΅ .zed/tasks.json.
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
- ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ Π² Zed.
- ΠΠ°ΠΆΠΌΠΈΡΠ΅
Cmd + Shift + R(Π½Π° Mac) ΠΈΠ»ΠΈCtrl + Shift + R(Π½Π° Windows/Linux), ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ ΠΌΠ΅Π½Ρ Π·Π°Π΄Π°Ρ. - ΠΠΈΠ±ΠΎ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ Command Palette (
Cmd/Ctrl + Shift + P) ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅task: spawn. - Π ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΌΡΡ ΡΠΏΠΈΡΠΊΠ΅ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π½ΡΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
- Development Server β Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ
pnpm devΠ² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅. - Build the application β ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡ.
- Lint the project β Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠΎΠ΄Π°.
- Production Server β Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
- Development Server β Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ
Π’Π΅ΡΠΌΠΈΠ½Π°Π» Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΡΠΎΠ΅ΡΡΡ ΠΏΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π»ΠΈΠ½ΡΠΈΠ½Π³Π΅) ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π² Π΄ΠΎΠΊΠ΅, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ.
ΠΡΠΎΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΡΠ°Π·Π΄Π΅Π»ΡΡ ΠΎΠ±ΡΠΈΠ΅ UI-ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ:
app/ # Π ΠΎΡΡΠΈΠ½Π³ Next.js (ΡΡΡΠ°Π½ΠΈΡΡ, layout, API)
modules/ # ΠΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-ΠΌΠΎΠ΄ΡΠ»ΠΈ (auth, projects, tasks, home)
components/
ui/ # ΠΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ "Π³Π»ΡΠΏΡΠ΅" UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
server/ # Π‘Π΅ΡΠ²Π΅ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ (Server Actions) ΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΠ
lib/ # Π£ΡΠΈΠ»ΠΈΡΡ, Ρ
Π΅Π»ΠΏΠ΅ΡΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ
prisma/ # Π‘Ρ
Π΅ΠΌΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ