Blog/nextjs/Next.js + Supabase ilə Tam Stack App: Bir Həftəlik Praktiki Yol Xəritəsi
nextjs

Next.js + Supabase ilə Tam Stack App: Bir Həftəlik Praktiki Yol Xəritəsi

B
Baku Stack AI
·28 mart 2026·4 dəq oxuma·23 baxış
nextjs.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ FULL-STACK ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ Next.js + Supabase ▓
▓ ● Day 1-2: Auth ▓
▓ ▓▓░░░░░░ 20% ▓
▓ ● Day 3-4: CRUD ▓
▓ ▓▓▓▓░░░░ 50% ▓
▓ ● Day 5-6: Polish ▓
▓ ▓▓▓▓▓▓░░ 80% ▓
▓ ● Day 7: Deploy ✓ ▓
▓ ▓▓▓▓▓▓▓▓ 100% ▓
▓ → vercel --prod ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Freelance layihə və ya startup ideyası üçün Next.js 14 və Supabase ilə bir həftədə production-ready app qurmağın addım-addım planı, real kod nümunələri ilə.

Niyə Məhz Bu Stack?

Bakıda developer kimi işləyəndə bir reallıqla tez-tez qarşılaşırsan: ya freelance layihə gəlir "tez olsun, ucuz olsun", ya da öz startup ideyanı sınamaq istəyirsən, amma backend infrastrukturu qurmaq həftələr alır. Məhz buna görə Next.js + Supabase kombinasiyası son iki ildə dünyada — və Bakıda da — ən sürətli full-stack development yollarından birinə çevrilib.

Stack Overflow-un 2025 Developer Survey-inə görə, Next.js artıq web framework-lər arasında istifadə baxımından ilk üçlükdədir. Supabase isə "open-source Firebase alternativi" kimi 2025-də 80.000+ production layihəyə çatıb. Bu ikisini birləşdirəndə auth, database, real-time, storage — hamısı hazırdır. Sən yalnız məhsuluna fokuslanırsan.

Turbo.az, Tap.az kimi platformaların klonu deyil, amma oxşar funksionallıqlı MVP-ni — istifadəçi qeydiyyatı, CRUD əməliyyatları, real-time update — bir həftədə çıxarmaq real şeydir. Gəl, bunu günlər üzrə planlaşdıraq.

Gün 1-2: Layihə Quruluşu və Auth

İlk addım — layihəni yaratmaq:

bash
npx create-next-app@latest my-app --typescript --tailwind --app cd my-app npm install @supabase/supabase-js @supabase/ssr

Supabase-də yeni layihə aç (https://supabase.com — free tier kifayətdir, 500 MB database, 1 GB storage). Sonra .env.local faylını yarat:

env
NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIs...

Supabase client-i yaratmaq üçün lib/supabase.ts:

typescript
import { createBrowserClient } from '@supabase/ssr' export function createClient() { return createBrowserClient( process.env.NEXT_PUBLIC_SUPABASE_URL!, process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! ) }

Auth üçün Supabase-in built-in email/password və ya Google OAuth istifadə edə bilərsən. Login səhifəsi üçün sadə bir nümunə:

typescript
'use client' import { createClient } from '@/lib/supabase' import { useState } from 'react' export default function LoginPage() { const [email, setEmail] = useState('') const [password, setPassword] = useState('') const supabase = createClient() const handleLogin = async () => { const { error } = await supabase.auth.signInWithPassword({ email, password, }) if (error) alert(error.message) else window.location.href = '/dashboard' } return ( <div className="flex flex-col gap-4 max-w-md mx-auto mt-20"> <h1 className="text-2xl font-bold">Daxil ol</h1> <input type="email" placeholder="Email" value={email} onChange={(e) => setEmail(e.target.value)} className="border p-2 rounded" /> <input type="password" placeholder="Şifrə" value={password} onChange={(e) => setPassword(e.target.value)} className="border p-2 rounded" /> <button onClick={handleLogin} className="bg-blue-600 text-white p-2 rounded"> Daxil ol </button> </div> ) }

Bu, 50 sətirdən az kodla işləyən auth sistemidir. Firebase-dən fərqli olaraq, Supabase altında PostgreSQL oturur — yəni SQL biliyin burada birbaşa işə yarayır.

Gün 3-4: Database və CRUD

Supabase Dashboard-da SQL Editor-a keç və cədvəlini yarat. Tutaq ki, iş elanları platforması qurursan:

sql
CREATE TABLE jobs ( id UUID DEFAULT gen_random_uuid() PRIMARY KEY, title TEXT NOT NULL, company TEXT NOT NULL, salary_min INTEGER, salary_max INTEGER, location TEXT DEFAULT 'Bakı', created_at TIMESTAMPTZ DEFAULT NOW(), user_id UUID REFERENCES auth.users(id) ); ALTER TABLE jobs ENABLE ROW LEVEL SECURITY; CREATE POLICY "Hər kəs elanları görə bilər" ON jobs FOR SELECT USING (true); CREATE POLICY "Yalnız öz elanını redaktə et" ON jobs FOR UPDATE USING (auth.uid() = user_id);

Row Level Security (RLS) — Supabase-in ən güclü cəhətlərindən biridir. Backend yazmadan database səviyyəsində authorization qurmuş olursan.

Next.js Server Component ilə dataları çəkmək:

typescript
import { createServerComponentClient } from '@supabase/ssr' import { cookies } from 'next/headers' export default async function JobsPage() { const supabase = createServerComponentClient({ cookies }) const { data: jobs } = await supabase .from('jobs') .select('*') .order('created_at', { ascending: false }) return ( <div className="max-w-4xl mx-auto p-6"> <h1 className="text-3xl font-bold mb-6">İş Elanları</h1> {jobs?.map((job) => ( <div key={job.id} className="border p-4 rounded mb-4"> <h2 className="text-xl font-semibold">{job.title}</h2> <p className="text-gray-600">{job.company} · {job.location}</p> <p className="text-green-600 font-medium"> {job.salary_min}-{job.salary_max} AZN </p> </div> ))} </div> ) }

Burada Server Component istifadə etdiyimiz üçün data server tərəfdə render olunur — SEO üçün əladır, client-ə əlavə JavaScript göndərilmir.

Gün 5-6: Real-time və Polish

Supabase-in real-time subscription-ı ilə yeni elan əlavə olunanda səhifə avtomatik yenilənsin:

typescript
'use client' import { useEffect, useState } from 'react' import { createClient } from '@/lib/supabase' export function RealtimeJobs({ initialJobs }) { const [jobs, setJobs] = useState(initialJobs) const supabase = createClient() useEffect(() => { const channel = supabase .channel('jobs-channel') .on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'jobs' }, (payload) => setJobs((prev) => [payload.new, ...prev]) ) .subscribe() return () => { supabase.removeChannel(channel) } }, [supabase]) return jobs.map((job) => <JobCard key={job.id} job={job} />) }

Bu iki günü həmçinin Tailwind ilə UI-ı gözəlləşdirməyə, loading skeleton-lar əlavə etməyə və error handling-ə sərf et. shadcn/ui component kitabxanası burada vaxtına çox qənaət edəcək — npx shadcn@latest add button card input ilə hazır komponentlər gəlir.

Gün 7: Deploy və Launch

Vercel-ə deploy — keçmişdə server kirayələmək, nginx konfiqurasiya etmək lazım idi. İndi:

bash
npm i -g vercel vercel --prod

Bu qədər. SSL, CDN, edge network — hamısı avtomatikdir. Free tier-də aylıq 100 GB bandwidth var, MVP üçün kifayətdir.

Bakı Konteksti: Bu Niyə Vacibdir?

LinkedIn-də Bakıdakı iş elanlarına baxsan, Next.js tələb edən vakansiyalar son bir ildə nəzərəçarpacaq artıb. Azərbaycanda orta full-stack developer maaşı 1500-3000 AZN arasındadır, amma Next.js + cloud stack bilən developer 2500-4500 AZN aralığına çıxa bilir. PASHA Holding, Kapital Bank texnoloji komandaları, ABB Tech kimi şirkətlər modern stack-ə keçid edir.

Freelance bazarda isə bu stack-lə kiçik bir SaaS və ya marketplace MVP-si qurmaq sənə 500-2000 USD arası layihələr gətirə bilər — Upwork-dəki orta qiymətlərə əsasən.

Nəticə: Stack Seçimi Karyera Seçimidir

Bir həftə ərzində Next.js + Supabase ilə real, işləyən, deploy olunmuş bir app qura bilərsən. Bu sadəcə texniki bacarıq deyil — bu, sənin portfolio-na qoyacağın, müsahibədə göstərəcəyin, hətta birbaşa monetizasiya edə biləcəyin bir layihədir.

Ən vacib addım — bu məqaləni oxuyub bağlamamaq, terminalı açıb npx create-next-app@latest yazmağdır. Qalanı gələcək.


Sualın var? GitHub repo və ya konkret texniki problem ilə bağlı @bakustack yaz — cavablandıracağıq.

Oxşar məqalələr

nextjs.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ DEVOPS XƏRC ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ Vercel Pro: $99/ay ▓
▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓░░░ 80% ▓
▓ Hetzner VPS: $40/ay ▓
▓ ▓▓▓▓▓▓░░░░░░░░░░ 35% ▓
▓──────────────────────▓
▓ DevOps vaxtı: ▓
▓ Vercel → ● 0 saat ▓
▓ VPS → ● 10 saat ▓
▓──────────────────────▓
▓ ✓ Hibrid = 25-60 AZN ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Vercel vs Öz Serverin — Azərbaycan Startapı üçün Xərc Analizi

Vercel-ə ayda $20 vermək yoxsa Hetzner-dən server almaq? Bakıda startap qurarkən real rəqəmlərlə hosting xərclərini müqayisə edirik.

nextjs.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ NEXT.JS 15 ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ app/ ▓
▓ ├── layout.tsx ✓ ▓
▓ ├── page.tsx ✓ ▓
▓ ├── loading.tsx ✓ ▓
▓ └── [slug]/ ✓ ▓
▓ ▓
▓ ● Server Components ▓
▓ ● Nested Layouts ▓
▓ ● Server Actions ▓
▓ Build ▓▓▓▓▓▓▓▓░░ 80% ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Next.js 15 App Router — Azərbaycan Developer-ləri Üçün Tam Bələdçi

Next.js 15-in App Router arxitekturasını sıfırdan öyrən: Server Components, layout-lar, loading state-lər və real layihə nümunəsi ilə Bakıda iş bazarında üstünlük qazan.

nextjs.ascii
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ ■ ■ ■ E-GOV PORTAL ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓ → Next.js 15 App Rtr ▓
▓ → ASAN Login OAuth2 ▓
▓ → PostgreSQL+Prisma ▓
▓ ● Auth ▓▓▓▓▓▓░░ 75% ▓
▓ ● i18n ▓▓▓▓░░░░ 50% ▓
▓ ● UI ▓▓▓▓▓▓▓░ 90% ▓
▓ ✓ SSR + RSC enabled ▓
▓ ✓ Middleware guard ▓
▓ ✓ Zod validation ▓
▓ 1200-6000 AZN/ay ↑ ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

Next.js ilə E-Government Portal: Praktiki Arxitektura Bələdçisi

Azərbaycanda e-gov layihələr artır, developer tələbat isə böyükdür. Next.js ilə real e-government portal arxitekturasını addım-addım quraq.

← Bloqa qayıt