Business website for insites, focused on modern, sleek UI/UX and a professional presentation of services and past work.
- Present insites as a premium digital partner.
- Highlight services and successful projects.
- Make contact fast and frictionless.
- Keep the stack maintainable and deployment portable.
- Next.js (React) + TypeScript
- Styling: CSS modules or scoped styles with CSS variables
- Package manager: pnpm
- Node.js: current LTS
- Landing: overview + services
- Services: Websites, Social Media Packages, AI Training
- Projects/Testimonials: showcase past work and feedback
- Contact: direct CTA + contact form/info
pnpm install
pnpm devOther useful scripts:
pnpm lint
pnpm typecheck
pnpm build
pnpm startSelf-hosted Linux server with systemd. scripts/deploy handles the full pipeline.
scripts/deploy --host example.com --path /srv/insites --service insites.serviceRun scripts/deploy --help for all flags and env-var overrides.
- Dry-run preview of rsync changes
- Syncs source to the remote path (excludes
.git,node_modules,.next,.env*) pnpm install --frozen-lockfileon the remotepnpm buildon the remote- Restarts the named systemd service
- SSH access from the deploying machine
rsyncandpnpmavailable on the remote- Node.js current LTS on the remote
- A systemd service unit running
pnpm startfrom the deploy path
| Variable | Required | Default | Notes |
|---|---|---|---|
NEXT_PUBLIC_SITE_URL |
Yes (prod) | http://localhost:3000 |
Canonical URL for metadata and OpenGraph |
Set in .env.local at the deploy path on the server, or via Environment= in the systemd unit. Never committed.
Contact form submissions are appended to logs/contact-submissions.jsonl relative to the working directory. The directory is created automatically on first submission. logs/ is git-ignored.
Podman preferred, Docker compatible. Images and unit files will be added in a future commit.
- Code and structure: GPL-3.0 (see
LICENSE). - Assets and content: proprietary (see
LICENSE-ASSETS).
- Follow
AGENTS.mdfor workflow and conventions. - Keep commits small and use semantic prefixes (feat, fix, chore, docs, refactor).