Skip to content

Repository files navigation

Balok

Marketing landing page for Balok AI — an AI-powered productivity workspace focused on deep work, team workflows, and tool integrations, delivered as a fast, maintainable single page.

Live: balok.akwancakra.my.id


Preview

Balok AI landing page: hero with Do More Deep Work headline, navigation, Start Free and View Demo CTAs, partner logo bar

Hero, navigation, value proposition, and social proof — dark mode with brand accents.


Project overview

Aspect Detail
Type Single-page marketing site (frontend-only; no backend API in this repo)
Entry src/routes/+page.svelte
Global layout src/routes/+layout.svelte
Static assets static/ → served from site root (/images/...)
Inactive archive code.html, src/lib/content/landing.html

Features

  • Responsive navbar: transparent at top, glass blur on scroll, hide on scroll down / show on scroll up, mobile menu
  • Hero with ray-light visual, gradient headline, dual CTAs (Start Free / View Demo)
  • Reveal-on-first-view animations (reveal-once)
  • Count-up for headline KPI numbers
  • Email CTA form with toasts (svelte-sonner), no server persistence
  • Article carousel with local images under static/images/articles
  • Workflow feature section with card illustrations (static/images/components/)
  • Custom brand SVG icons
  • Anti-drag behavior on images where applicable

Tech stack

  • Framework: SvelteKit 2, Svelte 5
  • Language: TypeScript 5
  • Build: Vite 7
  • Styling: Tailwind CSS v4 (@tailwindcss/vite), tw-animate-css, tokens in src/app.css
  • UI: Bits UI, shadcn-svelte-style components
  • Icons: Lucide (Svelte)
  • Other: mode-watcher, svelte-sonner, tailwind-merge / clsx / tailwind-variants, layerchart (where used)
  • Deploy: @sveltejs/adapter-nodenode build (see ecosystem.config.cjs for PM2 and deploy/nginx-balok.conf for reverse proxy)

Folder structure (summary)

balok/
├─ deploy/                 # sample nginx config
├─ docs/
├─ src/
│  ├─ lib/
│  │  ├─ actions/          # reveal-once, count-up, etc.
│  │  ├─ components/       # brand, ui (bits-ui / shadcn)
│  │  └─ sections/landing/ # main page sections
│  ├─ routes/
│  │  ├─ +layout.svelte
│  │  └─ +page.svelte
│  └─ app.css
├─ static/
│  └─ images/
│     ├─ articles/
│     ├─ components/       # workflow card illustrations
│     ├─ partners/
│     └─ balok-screenshot.png   # README preview
├─ ecosystem.config.cjs    # sample PM2 config
└─ README.md

Landing sections

Components in src/lib/sections/landing/:

  • BalokNavbar.svelte
  • BalokHero.svelte
  • BalokFeatureWorkflowSection.svelte
  • BalokProductivityInsightsSection.svelte
  • BalokAdoptionUsageSection.svelte
  • BalokProductivityArticlesSection.svelte
  • BalokFaqSection.svelte
  • BalokCommunityCtaSection.svelte
  • BalokFooter.svelte

Getting started

Prerequisites

  • Node.js 20+
  • npm 10+

Install & development

git clone https://github.com/akwancakra/balok.git
cd balok
npm install
npm run dev

Open http://localhost:5173.

Build & preview

npm run build
npm run preview

npm scripts

Script Purpose
npm run dev Vite dev server
npm run build Production build
npm run preview Preview production build
npm run start Run Node adapter (node build)
npm run check Svelte / TypeScript diagnostics
npm run check:watch Diagnostics in watch mode

Styling & tokens

  • Semantic tokens live in src/app.css (@theme inline, CSS variables).
  • Prefer classes such as bg-background, text-foreground, border-border, bg-primary, etc.
  • Avoid legacy hardcoded colors (background-light, surface-dark, …).

UI & animation utilities

  • Reveal: src/lib/actions/reveal-once.ts + .reveal-on-load in app.css
  • Count-up: src/lib/actions/count-up.ts
  • Toast: global toaster in +layout.sveltetoast.success / toast.error

Asset conventions

  • File at static/foo/bar.png → URL /foo/bar.png
  • Articles: static/images/articles/
  • README / marketing screenshot: static/images/balok-screenshot.png
  • Workflow cards: static/images/components/

CI/CD

GitHub Actions workflow (.github/workflows/deploy.yml): build on push to main, then deploy to a VPS over SSH. Build uses PUBLIC_SITE_URL aligned with the production domain.

Known issues

npm run check may still report:

  • BalokFaqSection.svelte: non-relative index.ts import; collapsible prop vs Accordion types
  • Warning: chart-container.svelte (state_referenced_locally)

Additional documentation

  • docs/project-initialization.md
  • docs/project-structure.md
  • docs/tech-stack.md

Credits

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages