commit a2c15be7052dacb8780175454e17f2469a06fd49 Author: vyakymenko Date: Wed Apr 22 12:01:01 2026 +0000 init: fibe.me promo site (Next.js + Tailwind) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa364d3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +.next/ +.env* +*.log diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..430c8af --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM node:20-alpine + +WORKDIR /app + +COPY package*.json ./ +RUN npm install + +COPY . . + +EXPOSE 3000 + +CMD ["npm", "run", "dev"] diff --git a/app/globals.css b/app/globals.css new file mode 100644 index 0000000..e5609b5 --- /dev/null +++ b/app/globals.css @@ -0,0 +1,19 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap'); + +* { + box-sizing: border-box; +} + +html { + font-family: 'Inter', sans-serif; + scroll-behavior: smooth; +} + +body { + background: #0a0a0a; + color: #ffffff; +} diff --git a/app/layout.jsx b/app/layout.jsx new file mode 100644 index 0000000..ed8a4b4 --- /dev/null +++ b/app/layout.jsx @@ -0,0 +1,14 @@ +import './globals.css' + +export const metadata = { + title: 'Fibe — Ship faster. Break less.', + description: 'Fibe is a fullstack playground orchestrator. Spin up production-like environments in seconds.', +} + +export default function RootLayout({ children }) { + return ( + + {children} + + ) +} diff --git a/app/page.jsx b/app/page.jsx new file mode 100644 index 0000000..32527e2 --- /dev/null +++ b/app/page.jsx @@ -0,0 +1,189 @@ +export default function Home() { + return ( +
+ + {/* Nav */} + + + {/* Hero */} +
+
+
+ + Docker-native fullstack orchestration +
+

+ Ship faster.
+ Break less. +

+

+ Fibe spins up production-like fullstack environments in seconds. + Git push. Done. No DevOps degree required. +

+
+ + Start for free + + + View on GitHub + +
+
+
+ + {/* Terminal snippet */} +
+
+
+
+ + + + terminal +
+
+

$ brew install fibegg/sdk/fibe

+

$ fibe pg create --name my-app

+

Launching playground... done

+

URL: https://my-app.fibe.me

+

$ git push && done.

+
+
+
+
+ + {/* Features */} +
+
+

Features

+

Everything you need. Nothing you don't.

+
+ {[ + { + icon: '⚡', + title: 'Instant Playgrounds', + desc: 'Full docker-compose environments live in under 60 seconds. Every branch, every PR.' + }, + { + icon: '🔀', + title: 'Git-native workflow', + desc: 'Connect any GitHub or Gitea repo. Push code, watch it live. No config files to fight.' + }, + { + icon: '🌐', + title: 'Auto SSL & routing', + desc: 'Traefik-powered subdomains with Let\'s Encrypt SSL out of the box. Zero ops.' + }, + { + icon: '🐳', + title: 'Docker all the way', + desc: 'Your compose file is the spec. Fibe orchestrates the rest — on your own VPS or ours.' + }, + { + icon: '🤖', + title: 'AI Genies', + desc: 'Autonomous agents that build, debug and deploy inside your Playgrounds.' + }, + { + icon: '🔒', + title: 'Secrets management', + desc: 'Encrypted key-value store. Inject env vars into any service without touching code.' + }, + ].map(({ icon, title, desc }) => ( +
+
{icon}
+

{title}

+

{desc}

+
+ ))} +
+
+
+ + {/* How it works */} +
+
+

How it works

+

Three steps to live.

+
+ {[ + { n: '01', title: 'Connect a repo', desc: 'Link your GitHub or Gitea repository as a Prop. Fibe tracks every branch.' }, + { n: '02', title: 'Launch a Playground', desc: 'Pick a Marquee (your VPS), choose a Playspec, hit launch. Docker does the rest.' }, + { n: '03', title: 'Push and iterate', desc: 'Your Playground hot-reloads on every push. Share the URL with your team instantly.' }, + ].map(({ n, title, desc }) => ( +
+ {n} +
+

{title}

+

{desc}

+
+
+ ))} +
+
+
+ + {/* Stack */} +
+
+

Built on boring tech

+

Battle-tested stack.

+

We don't chase hype. We chase reliability.

+
+ {['Docker', 'docker-compose', 'Traefik', 'Let\'s Encrypt', 'Go', 'PostgreSQL', 'Git', 'SSH'].map(t => ( + {t} + ))} +
+
+
+ + {/* CTA */} +
+
+

Ready to fibe?

+

Your first Playground is free. No credit card.

+ + Start building + +
+
+ + {/* Footer */} + + +
+ ) +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..16716bc --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +x-fibe.gg: + production: false + +services: + web: + build: . + ports: + - "3000" + volumes: + - .:/app + - /app/node_modules + - /app/.next + environment: + - NODE_ENV=development + labels: + - "fibe.gg/name=web" + - "fibe.gg/port=3000" + - "fibe.gg/production=false" diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..30423a3 --- /dev/null +++ b/next.config.js @@ -0,0 +1,6 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + allowedDevOrigins: ['*'], +} + +module.exports = nextConfig diff --git a/package.json b/package.json new file mode 100644 index 0000000..df22b3a --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "fibe-me", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev -p 3000", + "build": "next build", + "start": "next start -p 3000" + }, + "dependencies": { + "next": "14.2.29", + "react": "^18", + "react-dom": "^18" + }, + "devDependencies": { + "autoprefixer": "^10", + "postcss": "^8", + "tailwindcss": "^3" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..33ad091 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..632d42a --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,10 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + './app/**/*.{js,ts,jsx,tsx,mdx}', + ], + theme: { + extend: {}, + }, + plugins: [], +}