Kādas lapas šeit var taisīt
Šis karkass (Astro SSR + Node API + SQLite) ļauj veidot 7 lapu tipus. Katram zemāk ir dzīvs piemērs un koda fragments, lai redzi, kur to taisīt.
Node v22.22.3 · režīms production · 0 lapas · 0 API endpointi · 0 markdown faili
1. Statiska lapa
Vienkārša HTML lapa bez servera loģikas. Ātrākā, labākā SEO. Piemēri: par mums, kontakti, cenas.
📄 src/pages/index.astro
--- import Layout from "../components/Layout.astro"; --- <Layout title="Par mums"> <h1>Sveiki!</h1> <p>Šis ir statisks saturs.</p> </Layout>Sākumlapa / →
2. Markdown-vadīta lapa
Saturs no .md faila — rediģē bez koda. Ideāli blogam, dokumentācijai, lapām, ko pārvalda satura cilvēks.
📄 src/content/blog/*.md + src/pages/demo/blogs.astro
---
import { getCollection } from "astro:content";
const posts = await getCollection("blog");
---
{posts.map(p => <a href={"/blog/" + p.id}>{p.data.title}</a>)} Blogs (piemērs) → 3. Dinamiska lapa (SSR)
Lapa, kuras saturs atkarīgs no URL vai datubāzes. Piemērs: rezultāta lapa /result/[id], profila lapa, produkta lapa.
📄 src/pages/result/[id].astro
---
const { id } = Astro.params;
const row = db.select().from(sessions)
.where(eq(sessions.id, id)).get();
if (!row) return new Response(null, { status: 404 });
---
<h1>{row.name}</h1> Rezultāta lapa → 4. Forma → apstrāde
Lapa ar formu, kas sūta datus uz API, saglabā DB un pāradresē. Piemērs: kalkulators, reģistrācija, aptauja, pasūtījums.
📄 src/components/CalculatorForm.astro → /api/calculate
const res = await fetch("/api/calculate", {
method: "POST",
body: JSON.stringify(payload),
});
const { redirectUrl } = await res.json();
window.location.href = redirectUrl; Demo kalkulators → 5. API endpoints (JSON)
Servera loģika bez UI — atgriež JSON. Piemērs: dati mobilai aplikācijai, webhooks, integrācijas, AI izsaukumi.
📄 src/pages/api/*.ts
export const GET: APIRoute = async () => {
return new Response(JSON.stringify({ ok: true }), {
headers: { "Content-Type": "application/json" },
});
}; GET /api/admin-stats → 6. Aizsargāta lapa (admin)
Lapa aiz autentifikācijas. Piemērs: admin panelis, lietotāja konts, maksas saturs. Šeit ar ADMIN_SECRET (vai oauth2-proxy).
📄 src/pages/admin/index.astro + src/lib/auth.ts
const ok = isAdminAuthorized(Astro.request); if (!ok) return <p>Nav autorizēts.</p>; // rāda statistiku no DBAdmin panelis →
7. Daudzvalodu saturs
Saturs vairākās valodās no markdown (lv/en/ru). Karkasā jau ir promptu sagataves pa valodām — to pašu var lapām.
📄 src/content/prompts/{lv,en,ru}.md
const { lang } = Astro.params; // lv | en | ru
const entry = await getEntry("prompts", lang);
<article set:html={entry.body} /> Skatīt saturu →