diff --git a/.gitignore b/.gitignore index 08e7dfc..4e4baff 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ Thumbs.db *.log node_modules/ + +.vercel diff --git a/bimi-logo.svg b/bimi-logo.svg new file mode 100644 index 0000000..1ec0f9b --- /dev/null +++ b/bimi-logo.svg @@ -0,0 +1,5 @@ + + +Aura Ajentic AI + + diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..47b128f --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,25 @@ +services: + web: + build: + context: . + dockerfile: Dockerfile + networks: + - coolify + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" + - "traefik.http.routers.auraajenticai-http.entrypoints=http" + - "traefik.http.routers.auraajenticai-http.rule=Host(`auraajenticai.cloud`)" + - "traefik.http.routers.auraajenticai-http.middlewares=redirect-to-https" + - "traefik.http.routers.auraajenticai-https.entrypoints=https" + - "traefik.http.routers.auraajenticai-https.rule=Host(`auraajenticai.cloud`)" + - "traefik.http.routers.auraajenticai-https.tls=true" + - "traefik.http.routers.auraajenticai-https.tls.certresolver=letsencrypt" + - "traefik.http.services.auraajenticai.loadbalancer.server.port=80" + - "coolify.managed=true" + restart: unless-stopped + +networks: + coolify: + external: true + diff --git a/docs/MASTER.md b/docs/MASTER.md new file mode 100644 index 0000000..65c7719 --- /dev/null +++ b/docs/MASTER.md @@ -0,0 +1,464 @@ +# Aura Agentic AI Cloud — MASTER.md +> Single source of truth for the entire infrastructure. +> **Last updated:** 2026-05-02 | **VPS:** root@195.35.7.154 +> ⚠ Credentials are referenced by location only — never pasted here. + +--- + +## 1. VPS + +| Field | Value | +|-------|-------| +| Provider | Hostinger KVM 2 | +| Hostname | srv1540635.hstgr.cloud | +| IP | 195.35.7.154 | +| OS | Ubuntu 24.04.4 LTS | +| Kernel | 6.8.0-110-generic x86-64 | +| CPU | 2× vCPU (AMD EPYC, KVM) | +| RAM | 7.8 GB (4.2 GB used) | +| Disk | 96 GB SSD (36 GB used · 61 GB free · 38%) | +| Swap | 4 GB (256 KB used) | +| SSH Key | C:\Users\Masud\.ssh\id_ed25519 | + +--- + +## 2. Live Services & URLs + +### Coolify Services + +| UUID | Service | URL | Status | +|------|---------|-----|--------| +| `dhcia3tgcvwmwwvexznjw9gr` | OpenClaw (Primary Agent) | https://agent.auraajenticai.cloud | ✅ Healthy | +| `m10jif2sbykx4hd33qf97hc6` | OpenClaw (Secondary / App) | https://app.auraajenticai.cloud | ✅ Healthy | +| `j9pqq74tuik1oqd5runx5ncb` | n8n + PostgreSQL + Task Runners | https://n8n.auraajenticai.cloud | ✅ Healthy | +| `oqwgsn2lcv3hsk13c6ayj8du` | Gitea + PostgreSQL | https://git.auraajenticai.cloud | ✅ Healthy | + +### Coolify Applications + +| UUID | App | URL | Commit | Status | +|------|-----|-----|--------|--------| +| `q2kkhvkrpdm6ukj20gv69tuk` | Public Site | https://auraajenticai.cloud | a2a11b4 | ⚠ Pending pull (demo URLs commit not yet applied via Coolify) | +| `g5ehpyu7i1azk7f1sv1bhctz` | Central Auth | https://auth.auraajenticai.cloud | 923435bf | ✅ Up | +| `m43q7n7vlttrzyxy5v2hkaig` | API Gateway | https://api.auraajenticai.cloud | 8c2045a7 | ✅ Up | +| `rdqk1mqe0k8fifs64d7jrzfi` | Client Portal | https://client.auraajenticai.cloud | 03a90610 | ✅ Up | +| `j8xnv56xhx6wiaeal2bfiktm` | Billing | https://billing.auraajenticai.cloud | fd9aa384 | ✅ Up | +| `zu9kxa9iung19q003ybvcdj3` | Owner Dashboard | https://aura.auraajenticai.cloud | 2b652dba | ✅ Up | +| `m6fnc3kfy72tf77anuv4o2f4` | [Internal — UUID subdomain] | https://m6fnc3kfy72tf77anuv4o2f4.auraajenticai.cloud | 3df7af00 | ✅ Up | +| `rul16lgnv650ic5kv5wgd51h` | [Staging — no FQDN] | — | 03a90610 | — | +| `y22x4z5sxh3854tbmiv98s2j` | [Staging — no FQDN] | — | 03a90610 | — | +| `z24up798jcmaf4biwshx2kv5` | [Staging — no FQDN] | — | — | — | + +### Coolify System + +| Service | URL | +|---------|-----| +| Coolify Dashboard | https://coolify.auraajenticai.cloud (port 8000 local) | +| Traefik Dashboard | http://195.35.7.154:8080/dashboard/ ⚠ publicly accessible | +| Coolify Version | 4.0.0-beta.473 (Laravel 12.55.1) | +| Traefik Version | v3.6 | + +--- + +## 3. Complete Tech Stack + +### Infrastructure +- **Reverse Proxy:** Traefik v3.6 (HTTP :80 → HTTPS :443, Let's Encrypt cert resolver) +- **Orchestration:** Coolify 4.0.0-beta.473 (self-hosted) +- **Git:** Gitea v1.26.0 (SSH :22222, HTTP git.auraajenticai.cloud) +- **Containers:** Docker + Docker Compose +- **OS:** Ubuntu 24.04.4 LTS + +### AI / Agents +- **Agent Runtime:** OpenClaw v2026.2.6 +- **Primary Model:** `openrouter/anthropic/claude-sonnet-4.5` +- **AI Provider:** OpenRouter (key in Coolify .env) +- **Additional Providers:** Google Gemini (GEMINI_API_KEY set), Groq (GROQ_API_KEY set) +- **Channels:** Telegram (@tradingbanglaajentic_bot — long-polling) +- **Agent Tools:** read, edit, write, exec, browser, canvas, nodes, cron, message, sessions, web_search, memory + +### Automation +- **n8n:** v2.10.2 + Task Runners 2.10.2 +- **Webhooks:** https://n8n.auraajenticai.cloud/webhook/* + +### Frontend +- **Public Site:** React 18 + Babel Standalone (CDN, no build step) +- **Dashboard/Apps:** SvelteKit 2 + Svelte 5 runes + Tailwind CSS + Vite +- **Fonts:** Geist, Geist Mono, Instrument Serif (Google Fonts) + +### Backend +- **Auth Service:** Hono + Drizzle ORM + JWT + bcrypt (SvelteKit adapter-node) +- **API:** Node.js / Hono +- **Language:** TypeScript throughout + +### Databases + +| DB | Container | Engine | Database Name | Network IP | +|----|-----------|--------|---------------|------------| +| Auth/Main | `ernix50nvuq9ur9jy8na8tgr` | Supabase Postgres 17.4 | `aura_auth` | 10.0.1.7:5432 | +| n8n | `postgresql-j9pqq74tuik1oqd5runx5ncb` | Postgres 16-alpine | `n8n` | internal | +| Gitea | `postgresql-oqwgsn2lcv3hsk13c6ayj8du` | Postgres 16-alpine | `gitea` | internal | +| Coolify | `coolify-db` | Postgres 15-alpine | `coolify` | internal | +| Document | `b3bhfd7bocb4pm36uv36rebq` | MongoDB 7 | *(various)* | :27017 | +| Cache | `coolify-redis` | Redis 7-alpine | — | internal | + +### aura_auth DB Schema +Tables: `users`, `sessions`, `api_keys`, `audit_logs`, `clients`, `projects`, `skills`, `invoices` + +--- + +## 4. OpenClaw Configuration (Primary — `dhcia3tgcvwmwwvexznjw9gr`) + +``` +AI Provider: OpenRouter +Primary Model: openrouter/anthropic/claude-sonnet-4.5 +Secondary Model: anthropic/claude-3.5-haiku (env var, secondary/fast not in schema) +Fast Model: anthropic/claude-3-haiku (env var) +Gateway: ws://127.0.0.1:18789 (loopback, behind nginx on :8080) +Auth mode: token (OPENCLAW_GATEWAY_TOKEN) +nginx auth: SERVICE_USER_OPENCLAW / SERVICE_PASSWORD_OPENCLAW +``` + +### Telegram Channel +``` +Bot username: @tradingbanglaajentic_bot +Bot ID: 8736690733 +Mode: long-polling (no webhook URL set) +Status: enabled, configured, running +Channel name: default +Token env: TELEGRAM_BOT_TOKEN (in Coolify service .env) +``` +> To test: send any message to @tradingbanglaajentic_bot on Telegram. +> OpenClaw routes it to the main agent session → claude-sonnet-4.5 → reply back. + +### Workspace Files +Located at: `/var/lib/docker/volumes/dhcia3tgcvwmwwvexznjw9gr_openclaw-data/_data/workspace/` + +| File | Purpose | +|------|---------| +| AGENTS.md | Agent routing rules and capabilities | +| BOOTSTRAP.md | Startup context injected every session | +| HEARTBEAT.md | Scheduled check-in instructions | +| IDENTITY.md | Agent persona and identity rules | +| SOUL.md | Core values and behavioral constraints | +| TOOLS.md | Available tool descriptions | +| USER.md | User (Khondokar) profile and preferences | + +--- + +## 5. n8n Workflows + +URL: https://n8n.auraajenticai.cloud +Contact webhook: `POST https://n8n.auraajenticai.cloud/webhook/contact` + +| Workflow ID | Name | +|-------------|------| +| `j2JZuCcx38n6hFUa` | skill-code-review | +| `ICKS1V8j0rfFRCAM` | skill-analyze | +| `tza1cNW0fCZhMd63` | skill-draft-email | +| `1FtaniVPKRBKNDwX` | invoice-overdue-checker | +| `MeuMN9zV0m2SlPeV` | skill-summarize | +| `l2CkZKPgnSyt3Nvt` | Generate AI viral videos (NanoBanana + VEO3 → Blotato) | +| `zLqHh5sJ6rT7lyGU` | new-client-deployment | +| `sX0KPnr4c0Zh138d` | contact-form | +| `8kjRU6YNvtJpcpTD` | client-onboarding | +| `m4AB1XlfpvgmNmLF` | api-usage-weekly-report | + +--- + +## 6. Gitea Repositories + +Host: https://git.auraajenticai.cloud +User: `khondokar` +Token location: `C:\Users\Masud\.claude\projects\C--Users-Masud-aura\memory\project_aura_infrastructure.md` + +| Repo | URL | Last Updated | +|------|-----|-------------| +| khondokar/auraajenticai-main | git.auraajenticai.cloud/khondokar/auraajenticai-main | 2026-04-27 | + +### GitHub Mirrors (github.com/khondokartowsif171) + +| Repo | GitHub URL | Notes | +|------|-----------|-------| +| auraajenticai-main | github.com/khondokartowsif171/auraajenticai-main | Main site — latest commit a2a11b4 (demo URLs) | +| demo-autostudio-ecomercewebsite | github.com/khondokartowsif171/demo-autostudio-ecomercewebsite | Vite/React ecommerce | +| demo-agenticai-website | github.com/khondokartowsif171/demo-agenticai-website | Static HTML portfolio | +| demo-cryptotradeanalysis-website | github.com/khondokartowsif171/demo-cryptotradeanalysis-website | React crypto dashboard | +| demo-ea-dashboard | github.com/khondokartowsif171/demo-ea-dashboard | Static HTML XAUUSD analyzer | +| demo-portfolio-website | github.com/khondokartowsif171/demo-portfolio-website | Vite/React portfolio | + +--- + +## 7. Important File Paths + +### On VPS (root@195.35.7.154) + +``` +/docs/MASTER.md ← this file + +# Coolify data root +/data/coolify/applications/{uuid}/ ← per-app: .env + docker-compose.yaml +/data/coolify/services/{uuid}/ ← per-service: .env + docker-compose.yaml +/data/coolify/proxy/ ← Traefik dynamic config +/data/coolify/ssh/ ← SSH keys for deployments + +# OpenClaw Primary (dhcia3tgcvwmwwvexznjw9gr) +/var/lib/docker/volumes/dhcia3tgcvwmwwvexznjw9gr_openclaw-data/_data/ + .openclaw/openclaw.json ← main config (auto-managed by entrypoint) + .openclaw/openclaw.json.bak ← backup (up to 4 kept) + .openclaw/credentials/ ← API keys/tokens (never edit directly) + .openclaw/agents/main/sessions/sessions.json ← conversation history + workspace/ ← agent workspace (AGENTS.md, SOUL.md, etc.) + +# Service .env files (credentials) +/data/coolify/services/dhcia3tgcvwmwwvexznjw9gr/.env ← OpenClaw primary +/data/coolify/services/m10jif2sbykx4hd33qf97hc6/.env ← OpenClaw secondary +/data/coolify/services/j9pqq74tuik1oqd5runx5ncb/.env ← n8n + DB +/data/coolify/services/oqwgsn2lcv3hsk13c6ayj8du/.env ← Gitea +/data/coolify/applications/{uuid}/.env ← per-app credentials +``` + +### On Local (Windows — C:\Users\Masud\) + +``` +.ssh/id_ed25519 ← VPS SSH private key + +.claude/settings.json ← MCP servers + API keys +.claude/projects/C--Users-Masud-aura/ + memory/MEMORY.md ← Memory index + memory/project_aura_infrastructure.md ← Infra notes (has tokens) + memory/user_khondokar.md ← Founder profile + +aura/ + auraajenticai-main/ ← Public site source (git) + src/data.jsx ← All content + brand data + src/nav.jsx ← Navigation + lang toggle + src/hero.jsx ← Hero section + src/app.jsx ← Root app + lang state + src/projects.jsx ← Services grid (6 cards) + src/timeline-contact.jsx ← Timeline, contact form, footer + src/agent-showcase.jsx ← Agent demo terminal + index.html ← Entry point + CSS vars + Dockerfile ← nginx:1.27-alpine + nginx.conf ← JSX MIME fix + gzip + SPA + + aura-dashboard/ ← Owner Dashboard (SvelteKit 2) + n8n-mcp/index.js ← Custom n8n MCP server +``` + +--- + +## 8. Credentials Locations (NOT values) + +| Credential | Location | +|-----------|---------| +| VPS root password | Hostinger dashboard (hostinger.com) | +| SSH private key | C:\Users\Masud\.ssh\id_ed25519 | +| Coolify API token | memory/project_aura_infrastructure.md | +| Gitea token (khondokar) | memory/project_aura_infrastructure.md | +| OpenRouter API key | /data/coolify/services/dhcia3tgcvwmwwvexznjw9gr/.env → OPENROUTER_API_KEY | +| Telegram bot token | /data/coolify/services/dhcia3tgcvwmwwvexznjw9gr/.env → TELEGRAM_BOT_TOKEN | +| OpenClaw gateway token | /data/coolify/services/dhcia3tgcvwmwwvexznjw9gr/.env → SERVICE_PASSWORD_64_GATEWAYTOKEN | +| OpenClaw nginx auth | /data/coolify/services/dhcia3tgcvwmwwvexznjw9gr/.env → SERVICE_USER/PASSWORD_OPENCLAW | +| Gemini API key | /data/coolify/services/dhcia3tgcvwmwwvexznjw9gr/.env → GEMINI_API_KEY | +| Groq API key | /data/coolify/services/dhcia3tgcvwmwwvexznjw9gr/.env → GROQ_API_KEY | +| n8n admin credentials | /data/coolify/services/j9pqq74tuik1oqd5runx5ncb/.env | +| Cloudflare token (n8n) | /data/coolify/services/j9pqq74tuik1oqd5runx5ncb/.env → CLOUDFLARE_TOKEN | +| Cloudflare Zone ID | /data/coolify/services/j9pqq74tuik1oqd5runx5ncb/.env → CLOUDFLARE_ZONE_ID | +| Supabase DB password | /data/coolify/databases/ernix50nvuq9ur9jy8na8tgr/ or service .env | +| MongoDB auth | /data/coolify/databases/b3bhfd7bocb4pm36uv36rebq/ | +| JWT secret (shared) | application UUID g5ehpyu7... .env | +| aura_auth DB password | application UUIDs (dashboard apps) .env → DATABASE_URL | +| Claude Code API key | C:\Users\Masud\.claude\settings.json | +| n8n MCP API key | C:\Users\Masud\.claude\settings.json | + +--- + +## 9. MCP Tools Status + +Configured in: `C:\Users\Masud\.claude\settings.json` + +| MCP Server | Status | Key Tools | +|-----------|--------|-----------| +| **Coolify** (`04a4937c-...`) | ✅ Connected | d1_database_*, kv_namespace_*, r2_bucket_*, workers_* | +| **Gitea** | ✅ Connected | issue_*, pull_request_*, repo_*, user_* | +| **n8n** (local node server) | ✅ Connected | list_workflows, execute_workflow, set_workflow_active | +| **Google Calendar** (`c00adf3f-...`) | ✅ Connected | list_events, create_event, update_event | +| **Gmail** (`0525003c-...`) | ✅ Connected | search_threads, get_thread, create_draft | +| **Google Drive** (`d51cbec6-...`) | ✅ Connected | read_file_content, search_files, create_file | +| **Vercel** (`39a5e89f-...`) | ✅ Connected | list_projects, list_deployments, get_runtime_logs | +| **Claude Preview** | ✅ Available | preview_start, preview_screenshot, preview_eval | +| **Computer Use** | ✅ Available | screenshot, left_click, type, key, scroll | +| **Claude-in-Chrome** | ✅ Available | navigate, find, read_page, javascript_tool | + +--- + +## 10. Phase Completion Status + +| Phase | Description | Status | Completed | +|-------|-------------|--------|-----------| +| **0** | VPS audit, health report, swap configured, baseline | ✅ Complete | 2026-04-26 | +| **1** | Central Auth Service (SvelteKit + Hono + Drizzle + JWT + bcrypt) | ✅ Complete | 2026-04-26 | +| **2** | Owner Dashboard upgrade (sidebar nav, auth gate, Clients CRUD, Brain Console) | ✅ Complete | 2026-04-27 | +| **3** | Public site (auraajenticai.cloud) — bilingual EN/BN, 6 services, n8n contact form | ✅ Complete | 2026-04-27 | +| **4** | OpenClaw AI Agent — OpenRouter + claude-sonnet-4.5 + model ID fix | ✅ Complete | 2026-04-30 | +| **5** | Telegram integration — @tradingbanglaajentic_bot wired to OpenClaw agent | ✅ Complete | 2026-05-01 | +| **6** | Client portal (client.auraajenticai.cloud) | ✅ Deployed | — | +| **7** | API gateway (api.auraajenticai.cloud) | ✅ Deployed | — | +| **8** | Billing service (billing.auraajenticai.cloud) | ✅ Deployed | — | +| **9** | n8n automation (10 workflows: skills, contact, onboarding, invoice, AI video) | ✅ Active | — | +| **10** | DB backups, monitoring, Traefik hardening, OpenClaw secondary model config | ⏳ Pending | — | +| **11** | Demo projects — 5 Vercel deployments, GitHub repos, live demo buttons on public site | ✅ Complete | 2026-05-02 | + +--- + +## 11. Pending / Known Gaps + +### High Priority +- [ ] **Phase 10:** Automated DB backups (no crontab yet — data loss risk) +- [ ] **Traefik dashboard** `:8080` is publicly accessible — restrict to VPN/IP allowlist +- [ ] **OpenClaw secondary** (`app.auraajenticai.cloud` — `m10jif2sbykx4hd33qf97hc6`) has no `OPENCLAW_PRIMARY_MODEL` set +- [ ] **ANTHROPIC_API_KEY** not set in Owner Dashboard app (required for Brain Console feature) +- [ ] **Telegram live test** — send `/start` to @tradingbanglaajentic_bot to verify full round-trip +- [ ] **Public site — pull & rebuild** — commit `a2a11b4` (demo URLs) is on GitHub but NOT yet pulled into VPS/Coolify. Run from Hostinger console (see §13) +- [ ] **Cloudflare DNS** — `auraajenticai.cloud` A record still points to VPS (195.35.7.154). Vercel domain added (`auraajenticai-main` project) but DNS not yet switched. Need `A → 76.76.21.21` + `www CNAME → cname.vercel-dns.com`. Cloudflare token at `/data/coolify/services/j9pqq74tuik1oqd5runx5ncb/.env → CLOUDFLARE_TOKEN` + +### Medium Priority +- [ ] Set up disk/memory monitoring (no alerting configured) +- [ ] Configure Traefik rate limiting on API gateway +- [ ] Gitea webhook → Coolify auto-deploy (currently triggered manually) +- [ ] n8n workflow active/inactive status audit (10 workflows, status not confirmed per-item) +- [ ] MongoDB — confirm root credentials and access restriction + +### Low Priority +- [ ] `www.auraajenticai.cloud` CNAME redirect to apex +- [ ] Log retention policy for OpenClaw gateway logs (`/tmp/openclaw/`) +- [ ] Document aura_auth DB migration history +- [ ] Add `app.auraajenticai.cloud` source repo to Gitea + +--- + +## 12. Auth Service Details + +``` +URL: https://auth.auraajenticai.cloud +Container UUID: g5ehpyu7i1azk7f1sv1bhctz +Container IP: 10.0.1.12 +Framework: SvelteKit + Hono + Drizzle + JWT + bcrypt +DB: Supabase Postgres 17.4 @ 10.0.1.7:5432/aura_auth +Cookies: + aura_access → 15-min JWT + aura_refresh → 7-day (path /api/auth/refresh) +Cookie domain: .auraajenticai.cloud +Login URL: https://auth.auraajenticai.cloud/login?next= +``` + +--- + +## 13. Quick Reference Commands + +```bash +# SSH to VPS +ssh root@195.35.7.154 + +# All containers + status +docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}' + +# OpenClaw — live logs (primary) +docker logs openclaw-dhcia3tgcvwmwwvexznjw9gr --tail=30 -f + +# OpenClaw — test agent +docker exec openclaw-dhcia3tgcvwmwwvexznjw9gr \ + openclaw agent --message "ping" --session-id main --json + +# OpenClaw — Telegram channel status +docker exec openclaw-dhcia3tgcvwmwwvexznjw9gr openclaw channels status + +# OpenClaw — restart with updated env +cd /data/coolify/services/dhcia3tgcvwmwwvexznjw9gr +docker compose up openclaw --force-recreate -d + +# n8n — list workflows +docker exec n8n-j9pqq74tuik1oqd5runx5ncb n8n list:workflow + +# Disk usage +df -h / && du -sh /var/lib/docker/volumes/*openclaw* /data/coolify/ + +# Check all service domains +for d in /data/coolify/services/*/; do + uuid=$(basename $d) + fqdn=$(grep SERVICE_FQDN= $d/.env 2>/dev/null | cut -d= -f2) + echo "$uuid: $fqdn" +done +``` + +--- + +--- + +## 14. Vercel Deployments (2026-05-02) + +Team: `khondokartowsif171s-projects` (`team_9DzpWOXgLFfZkFhpYL0QoKAO`) + +| Project | Live URL | GitHub Repo | Notes | +|---------|----------|-------------|-------| +| auraajenticai-main | https://auraajenticai-main.vercel.app | khondokartowsif171/auraajenticai-main | Main site — domain `auraajenticai.cloud` added to project, DNS not yet switched | +| demo-autostudio-ecomercewebsite | https://demo-autostudio-ecomercewebsite.vercel.app | khondokartowsif171/demo-autostudio-ecomercewebsite | Linked to service card: Website & Webapp Dev | +| demo-agenticai-website | https://demo-agenticai-website.vercel.app | khondokartowsif171/demo-agenticai-website | Linked to: AI Agent & Automation | +| demo-cryptotradeanalysis-website | https://demo-cryptotradeanalysis-website.vercel.app | khondokartowsif171/demo-cryptotradeanalysis-website | Linked to: Web3 & Blockchain | +| ea-dashboard | https://ea-dashboard-blush.vercel.app | khondokartowsif171/demo-ea-dashboard | Linked to: MT5 EA & Trading | +| portfolio-website | https://portfolio-website-tan-six-24.vercel.app | khondokartowsif171/demo-portfolio-website | Linked to: Scraping & Data Pipeline | + +### Demo URL → Service Card Mapping (`src/data.jsx`) +``` +web-app-dev → https://demo-autostudio-ecomercewebsite.vercel.app +ai-agent-automation → https://demo-agenticai-website.vercel.app +web3-blockchain → https://demo-cryptotradeanalysis-website.vercel.app +mt5-ea-trading → https://ea-dashboard-blush.vercel.app +scraping-data-pipeline → https://portfolio-website-tan-six-24.vercel.app +infra-devops → (no demo — button hidden) +``` + +--- + +## 15. VPS Console Commands (run from Hostinger web console) + +Use when SSH from local machine is blocked by network routing issues. + +```bash +# Pull latest main site source from GitHub into Coolify app dir +cd /data/coolify/applications/q2kkhvkrpdm6ukj20gv69tuk +git remote get-url github 2>/dev/null || \ + git remote add github https://github.com/khondokartowsif171/auraajenticai-main.git +git pull github main + +# Also push to Gitea to keep it in sync +git push origin main + +# Trigger Coolify rebuild for the public site +curl -s -X POST http://localhost:8000/api/v1/applications/q2kkhvkrpdm6ukj20gv69tuk/start \ + -H "Authorization: Bearer 6|aura-claude-ceo-2026-secret" + +# Get Cloudflare token + zone ID for DNS update +grep -E "CLOUDFLARE_TOKEN|CLOUDFLARE_ZONE_ID" \ + /data/coolify/services/j9pqq74tuik1oqd5runx5ncb/.env + +# Update Cloudflare DNS: point auraajenticai.cloud to Vercel (76.76.21.21) +# Replace ZONE_ID and TOKEN with values from above +CF_ZONE="ZONE_ID_HERE" +CF_TOKEN="TOKEN_HERE" +# Get existing A record ID +curl -s "https://api.cloudflare.com/client/v4/zones/$CF_ZONE/dns_records?type=A&name=auraajenticai.cloud" \ + -H "Authorization: Bearer $CF_TOKEN" | grep -o '"id":"[^"]*"' | head -1 +# Update it (replace RECORD_ID) +curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CF_ZONE/dns_records/RECORD_ID" \ + -H "Authorization: Bearer $CF_TOKEN" -H "Content-Type: application/json" \ + -d '{"type":"A","name":"auraajenticai.cloud","content":"76.76.21.21","ttl":1,"proxied":true}' +# Add www CNAME +curl -s -X POST "https://api.cloudflare.com/client/v4/zones/$CF_ZONE/dns_records" \ + -H "Authorization: Bearer $CF_TOKEN" -H "Content-Type: application/json" \ + -d '{"type":"CNAME","name":"www","content":"cname.vercel-dns.com","ttl":1,"proxied":false}' +``` + +--- + +*Generated by Claude (Aura AI Brain) on 2026-05-01. Updated 2026-05-02. Update this file after each infrastructure change.* diff --git a/index.html b/index.html index d9420ec..797127b 100644 --- a/index.html +++ b/index.html @@ -3,16 +3,155 @@ - Aura Agentic AI — AI Agents, Automation & Full-Stack Dev - - - + Aura Ajentic AI — Autonomous AI Sales Agents, Courier MCP & COD Fraud Shield + + + + - + + + + + + + + + + + + + + + + + + + + + + + + @@ -187,6 +326,10 @@ + + +
@@ -194,16 +337,18 @@ - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..74c6c93 Binary files /dev/null and b/logo.png differ diff --git a/robots.txt b/robots.txt new file mode 100644 index 0000000..d8dc6ef --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://auraajenticai.cloud/sitemap.xml diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..c471d8e --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,8 @@ + + + + https://auraajenticai.cloud/ + weekly + 1.0 + + diff --git a/src/app.jsx b/src/app.jsx index 21925c9..2f75bc6 100644 --- a/src/app.jsx +++ b/src/app.jsx @@ -1,4 +1,4 @@ -// Root app: theme + ⌘K + Tweaks + scroll reveal +// Root app: theme + ⌘K + Tweaks + hash router const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "#7c5cff", @@ -8,6 +8,27 @@ const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "heroHeadlineSuffix": "automation engineer" }/*EDITMODE-END*/; +// Simple hash router — reads window.location.hash +function useHashRoute() { + const [route, setRoute] = React.useState(() => { + const h = window.location.hash; + return h.startsWith('#/') ? h.slice(2) : ''; + }); + + React.useEffect(() => { + const onHash = () => { + const h = window.location.hash; + const r = h.startsWith('#/') ? h.slice(2) : ''; + setRoute(r); + window.scrollTo(0, 0); + }; + window.addEventListener('hashchange', onHash); + return () => window.removeEventListener('hashchange', onHash); + }, []); + + return route; +} + function App() { const [theme, setTheme] = React.useState(() => { return localStorage.getItem("aura-theme") || "dark"; @@ -15,11 +36,11 @@ function App() { const [paletteOpen, setPaletteOpen] = React.useState(false); const [tweaks, setTweak] = window.useTweaks(TWEAK_DEFAULTS); const [lang, setLang] = React.useState(() => localStorage.getItem("aura-lang") || "en"); + const route = useHashRoute(); React.useEffect(() => { localStorage.setItem("aura-lang", lang); }, [lang]); const toggleLang = () => setLang(l => l === "en" ? "bn" : "en"); - // theme React.useEffect(() => { document.documentElement.dataset.theme = theme; localStorage.setItem("aura-theme", theme); @@ -33,7 +54,6 @@ function App() { return () => window.removeEventListener("aura:toggle-theme", onToggle); }, []); - // ⌘K React.useEffect(() => { const onKey = (e) => { if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "k") { @@ -45,17 +65,83 @@ function App() { return () => window.removeEventListener("keydown", onKey); }, []); - // tweaks accent vars — apply to :root React.useEffect(() => { document.documentElement.style.setProperty("--accent", tweaks.accent); document.documentElement.style.setProperty("--accent-2", tweaks.accent2); - document.documentElement.style.setProperty("--accent-glow", tweaks.accent + "59"); // ~35% alpha + document.documentElement.style.setProperty("--accent-glow", tweaks.accent + "59"); }, [tweaks.accent, tweaks.accent2]); - // density - const density = tweaks.density; + // Dynamic meta tags per route + React.useEffect(() => { + const BASE = 'Aura Ajentic AI'; + const SERVICE_IDS = (PORTFOLIO_DATA.services || []).reduce((m, s) => { + m['services/' + s.id] = { title: `${s.name} — ${BASE}`, desc: s.description }; + return m; + }, {}); + const META = { + '': { + title: `${BASE} — AI Agents, Automation & Full-Stack Dev`, + desc: "Aura is an autonomous AI SaaS platform providing conversational AI sales agents, COD fraud defense, and Bangladesh's first Model Context Protocol (MCP) courier logistics engine for modern commerce brands.", + }, + services: { + title: `Services — ${BASE}`, + desc: "AI agents, web development, Web3, MT5 trading automation, data pipelines, DevOps, and Meta Ads AI — 7 production-ready services that ship to production.", + }, + stack: { + title: `Tech Stack — ${BASE}`, + desc: "What actually runs our own live products: React, SvelteKit, Next.js, Node.js, Supabase, Google Gemini · Vertex AI, n8n, Solidity, Docker, Coolify, and more.", + }, + agents: { + title: `AI Agents — ${BASE}`, + desc: "Live demos of AI agents built with Google Gemini · Vertex AI, LangGraph, and n8n. Agents that triage, decide, and execute with tool access, memory, and audit trails.", + }, + timeline: { + title: `Experience — ${BASE}`, + desc: "Founded July 2026. Real, dated milestones — from founding Aura Ajentic AI in Dhaka to our first paying client to Meta Tech Provider status. Not a résumé.", + }, + contact: { + title: `Contact — ${BASE}`, + desc: "Get a quote for AI agents, automation, web development, Web3, or MT5 trading systems. Based in Dhaka, Bangladesh. Response within 24 hours.", + }, + 'case-studies': { + title: `Case Studies — ${BASE}`, + desc: "Explore our production metrics, customer growth, and live enterprise deployments powered by Aura Agentic AI.", + }, + pricing: { + title: `Pricing — ${BASE}`, + desc: "Predictable B2B SaaS pricing for autonomous AI agents, Courier MCP logistics, and COD fraud defense. Starter, Growth, and Enterprise subscription plans.", + }, + blog: { + title: `Blog — ${BASE}`, + desc: 'Real technical write-ups on AI agents, automation, and the infrastructure behind Aura Ajentic AI — published as we ship, not before.', + }, + products: { + title: `Our Products — ${BASE}`, + desc: 'Snehalata and Glamours Touch — Aura\'s own live products, built and run on our own stack. Real businesses, not demos.', + }, + privacy: { + title: `Privacy Policy — ${BASE}`, + desc: 'What Aura Ajentic AI collects, how it\'s used, and how to ask us to delete it.', + }, + terms: { + title: `Terms of Service — ${BASE}`, + desc: 'Terms for Aura Ajentic AI project engagements and client dashboard access.', + }, + ...SERVICE_IDS, + }; - // scroll reveal + const m = META[route] || META['']; + document.title = m.title; + const setMeta = (sel, val) => { const el = document.querySelector(sel); if (el) el.setAttribute('content', val); }; + setMeta('meta[name="description"]', m.desc); + setMeta('meta[property="og:title"]', m.title); + setMeta('meta[property="og:description"]', m.desc); + setMeta('meta[property="og:url"]', `https://auraajenticai.cloud/${route ? '#/' + route : ''}`); + setMeta('meta[name="twitter:title"]', m.title); + setMeta('meta[name="twitter:description"]', m.desc); + }, [route]); + + // scroll reveal (re-run on route change) React.useEffect(() => { const els = document.querySelectorAll(".reveal"); const io = new IntersectionObserver(entries => { @@ -63,35 +149,77 @@ function App() { }, { threshold: 0.1 }); els.forEach(el => io.observe(el)); return () => io.disconnect(); - }, []); + }, [route]); + const density = tweaks.density; const T = window; + const navProps = { + onCmdK: () => setPaletteOpen(true), + theme, onToggleTheme: toggleTheme, + lang, onToggleLang: toggleLang, + route, + }; + + const renderPage = () => { + // Service detail pages: #/services/:id + if (route.startsWith('services/')) { + const id = route.slice('services/'.length); + const svc = (PORTFOLIO_DATA.services || []).find(s => s.id === id); + if (svc) return ; + window.location.hash = '#/services'; + return null; + } + + switch (route) { + case 'services': + return ; + case 'stack': + return ; + case 'agents': + return ; + case 'timeline': + return ; + case 'contact': + return ; + case 'pricing': + return ; + case 'blog': + return ; + case 'case-studies': + return ; + case 'privacy': + return ; + case 'terms': + return ; + default: + return ( +
+ + + + + + + + + +
+ ); + } + }; + return ( <> - setPaletteOpen(true)} theme={theme} onToggleTheme={toggleTheme} lang={lang} onToggleLang={toggleLang} /> -
- - - - - - - -
- - - setPaletteOpen(false)} /> + + {renderPage()} + + setPaletteOpen(false)} lang={lang} /> + - setTheme(v)} - options={["dark", "light"]} - /> - + setTheme(v)} options={["dark", "light"]} /> setTweak("accent", v)} /> setTweak("accent2", v)} /> @@ -104,29 +232,17 @@ function App() { ["Mono", "#ffffff", "#a4a8b3"], ].map(([name, a, b]) => ( ))} - - setTweak("density", v)} - options={["compact", "spacious"]} - /> - + setTweak("density", v)} options={["compact", "spacious"]} /> setTweak("heroHeadlinePrefix", v)} /> setTweak("heroHeadlineSuffix", v)} /> diff --git a/src/chatbox.jsx b/src/chatbox.jsx new file mode 100644 index 0000000..029bcfe --- /dev/null +++ b/src/chatbox.jsx @@ -0,0 +1,220 @@ +// Aura Chatbox Widget +// Fetches config from dashboard API, routes messages through backend. + +const DASHBOARD = 'https://aura.auraajenticai.cloud' + +const ChatboxWidget = () => { + const [config, setConfig] = React.useState(null) + const [open, setOpen] = React.useState(false) + const [messages, setMessages] = React.useState([]) + const [input, setInput] = React.useState('') + const [loading, setLoading] = React.useState(false) + const [isAfterHours, setIsAfterHours] = React.useState(false) + const messagesEndRef = React.useRef(null) + + React.useEffect(() => { + fetch(`${DASHBOARD}/api/public/chatbox`) + .then(r => r.ok ? r.json() : null) + .then(cfg => { + if (!cfg) return + setConfig(cfg) + if (cfg.isEnabled) { + const afterHours = checkAfterHours(cfg.businessHours) + setIsAfterHours(afterHours) + setMessages([{ role: 'bot', text: cfg.welcomeMessage }]) + } + }) + .catch(() => {}) + }, []) + + React.useEffect(() => { + if (open && messagesEndRef.current) { + messagesEndRef.current.scrollIntoView({ behavior: 'smooth' }) + } + }, [messages, open]) + + function checkAfterHours(businessHours) { + if (!businessHours) return false + const days = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'] + const now = new Date() + const day = days[now.getDay()] + const hours = businessHours[day] + if (!hours || hours === 'closed') return true + const [open, close] = hours.split('-').map(t => { + const [h, m] = t.split(':').map(Number) + return h * 60 + (m || 0) + }) + // UTC+6 Bangladesh time + const bdMin = ((now.getUTCHours() + 6) % 24) * 60 + now.getUTCMinutes() + return bdMin < open || bdMin >= close + } + + async function sendMessage() { + if (!input.trim() || loading || isAfterHours) return + const text = input.trim() + setInput('') + setMessages(prev => [...prev, { role: 'user', text }]) + setLoading(true) + try { + const res = await fetch(`${DASHBOARD}/api/public/chatbox/chat`, { + method: 'POST', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ message: text }), + }) + const data = await res.json() + setMessages(prev => [...prev, { role: 'bot', text: data.reply || config?.fallbackMessage }]) + } catch { + setMessages(prev => [...prev, { role: 'bot', text: config?.fallbackMessage || "I'll get back to you soon." }]) + } finally { + setLoading(false) + } + } + + function onKey(e) { + if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); sendMessage() } + } + + if (!config?.isEnabled) return null + + return ( +
+ {/* Chat window */} + {open && ( +
+ {/* Header */} +
+
⬡
+
+
Aura AI
+
+ + {isAfterHours ? 'After hours' : 'Online'} +
+
+ +
+ + {/* Messages */} +
+ {messages.map((m, i) => ( +
+
{m.text}
+
+ ))} + {loading && ( +
+
•••
+
+ )} + {isAfterHours && ( +
+ {config.afterHoursMessage} +
+ )} +
+
+ + {/* Input */} +
+ setInput(e.target.value)} + onKeyDown={onKey} + disabled={isAfterHours || loading} + placeholder={isAfterHours ? 'Chat unavailable right now' : 'Ask me anything…'} + style={{ + flex: 1, padding: '8px 12px', + background: 'rgba(255,255,255,0.05)', + border: '1px solid rgba(255,255,255,0.1)', + borderRadius: 8, color: '#f4f5f7', + fontSize: 13, + outline: 'none', + }} + /> + +
+
+ )} + + {/* Toggle button */} + +
+ ) +} + +window.ChatboxWidget = ChatboxWidget diff --git a/src/data.jsx b/src/data.jsx index fa9a97d..64f4fc8 100644 --- a/src/data.jsx +++ b/src/data.jsx @@ -1,75 +1,58 @@ // Content for the portfolio const PORTFOLIO_DATA = { brand: { - name: "Aura Agentic AI", + name: "Aura Ajentic AI", handle: "@aura", title: "Agentic AI & Full-Stack Development", titleBn: "এজেন্টিক এআই ও ফুল-স্ট্যাক ডেভেলপমেন্ট", tagline: "We build AI agents, automation & enterprise systems that work 24/7.", taglineBn: "আমরা AI এজেন্ট, অটোমেশন ও এন্টারপ্রাইজ সিস্টেম তৈরি করি যা ২৪/৭ কাজ করে।", location: "Dhaka, Bangladesh · Remote", - yearsExp: 7, - email: "hello@auraajenticai.cloud", + founded: "Jul 2026", + email: "ceo@auraajenticai.cloud", + whatsapp: "8801911877091", domain: "auraajenticai.cloud", socials: { - github: "https://github.com", - linkedin: "https://linkedin.com", + github: "https://github.com/khondokartowsif171", + linkedin: "https://www.linkedin.com/in/amirul-islam-redwan-90114a3ab/", twitter: "https://twitter.com", }, }, + // Every number below is real and checkable today -- never add a stat we can't stand behind if + // someone asks where it comes from. metrics: [ - { label: "Years shipping", value: "7+" }, - { label: "Agents in production", value: "40+" }, - { label: "Enterprise clients", value: "12" }, - { label: "Uptime maintained", value: "99.98%" }, + { label: "Products we built & run ourselves", labelBn: "আমাদের নিজের বানানো ও চালানো প্রোডাক্ট", value: "2" }, + { label: "Products in our own live catalog", labelBn: "আমাদের নিজের catalog-এ প্রোডাক্ট", value: "560+" }, + { label: "Meta-approved WhatsApp bot", labelBn: "Meta-approved WhatsApp বট", value: "Live" }, + { label: "Self-hosted infrastructure", labelBn: "নিজস্ব হোস্টেড ইনফ্রাস্ট্রাকচার", value: "100%" }, ], about: { - pitch: "I build the systems that act on behalf of teams — agents that triage, route, decide, and execute. The work spans the full stack: model orchestration, eval harnesses, queue infrastructure, dashboards, on-chain settlement, and the tedious connective tissue that turns a clever demo into something a CFO will sign off on.", + pitch: "We're a new studio building the systems that act on behalf of teams — agents that triage, route, decide, and execute. Rather than pitch and disappear, we build our own products first and run them ourselves: a live WhatsApp sales bot answering real customers today, on infrastructure we host and pay for out of pocket, not resold AWS margins.", + pitchBn: "আমরা একটা নতুন স্টুডিও, যারা এমন সিস্টেম তৈরি করি যা টিমের হয়ে সরাসরি কাজ করে — এজেন্ট যা বিচার করে, route করে, সিদ্ধান্ত নেয়, এবং কাজ সম্পন্ন করে। শুধু পিচ দিয়ে হারিয়ে না গিয়ে, আমরা আগে নিজেদের প্রোডাক্ট বানাই ও নিজেরাই চালাই — একটা live WhatsApp sales বট যা আজই real কাস্টমারদের উত্তর দিচ্ছে, নিজেদের হোস্ট করা ইনফ্রাস্ট্রাকচারে, resold AWS margin না।", bullets: [ - "Designed agent runtimes for fintech & MLM platforms moving 8-figure GMV", - "Built orchestration layers across OpenAI, Anthropic, vLLM, and self-hosted models", - "Shipped Web3 settlement rails — wallets, signers, on-chain audit trails", - "Lead architect on three SaaS dashboards now serving 50k+ daily users", + "Built and run our own WhatsApp + Messenger sales bot, live in Bengali, 24/7", + "Self-host our entire stack on our own VPS with Coolify — no reselling AWS", + "Meta Tech Provider status — we can onboard other businesses' WhatsApp numbers", + "Enterprise Agentic Architecture, natively powered by Google Gemini & Vertex AI", + ], + bulletsBn: [ + "নিজেদের WhatsApp + Messenger sales বট বানিয়ে চালাচ্ছি, বাংলায়, ২৪/৭ live", + "পুরো স্ট্যাক নিজেদের VPS-এ Coolify দিয়ে self-host করি — AWS resell না", + "Meta Tech Provider status অর্জন করেছি — অন্য ব্যবসার WhatsApp নম্বরও onboard করতে পারি", + "গুগল জেমিনাই ও ভার্টেক্স এআই ইনফ্রাস্ট্রাকচারে পরিচালিত এন্টারপ্রাইজ এজেন্টিক সিস্টেম", ], }, + // Real tools we actually build with -- no fabricated proficiency percentages. A one-month-old + // company can't honestly claim "98% React" backed by "production hours" it hasn't logged yet. stack: { - Frontend: [ - { name: "React", level: 98 }, - { name: "Next.js", level: 96 }, - { name: "TypeScript", level: 95 }, - { name: "Tailwind", level: 94 }, - { name: "Framer Motion", level: 88 }, - ], - Backend: [ - { name: "Node.js", level: 96 }, - { name: "Python · FastAPI", level: 92 }, - { name: "PostgreSQL", level: 94 }, - { name: "Supabase", level: 90 }, - { name: "Redis · BullMQ", level: 88 }, - ], - "AI / Agents": [ - { name: "LangGraph", level: 95 }, - { name: "OpenAI · Anthropic", level: 96 }, - { name: "Vector DBs", level: 90 }, - { name: "Eval harnesses", level: 86 }, - { name: "Tool routing", level: 92 }, - ], - "Web3": [ - { name: "Solidity", level: 84 }, - { name: "ethers · viem", level: 90 }, - { name: "Wallet integrations", level: 92 }, - { name: "On-chain indexing", level: 80 }, - ], - DevOps: [ - { name: "Docker", level: 92 }, - { name: "AWS · GCP", level: 88 }, - { name: "Vercel · Fly.io", level: 94 }, - { name: "GitHub Actions", level: 90 }, - { name: "Observability", level: 86 }, - ], + Frontend: ["React", "Next.js", "TypeScript", "Tailwind", "SvelteKit"], + Backend: ["Node.js", "PostgreSQL", "Supabase", "Drizzle ORM", "Hono"], + "AI / Agents": ["Google Gemini", "Vertex AI", "n8n", "LangGraph", "Meta MCP"], + "Web3": ["Solidity", "viem", "wagmi", "Cloudflare Workers"], + DevOps: ["Docker", "Coolify", "Traefik", "GitHub Actions", "Vercel"], }, services: [ @@ -78,69 +61,318 @@ const PORTFOLIO_DATA = { name: "Website & Webapp Development", nameBn: "ওয়েবসাইট ও ওয়েবঅ্যাপ ডেভেলপমেন্ট", kind: "Core Service", + kindBn: "কোর সার্ভিস", description: "From landing pages to full SaaS dashboards — pixel-perfect, fast, and built to scale. SvelteKit, Next.js, React, Tailwind.", + descriptionBn: + "ল্যান্ডিং পেজ থেকে শুরু করে সম্পূর্ণ SaaS ড্যাশবোর্ড পর্যন্ত — pixel-perfect, দ্রুত, এবং স্কেল করার উপযোগী করে তৈরি। SvelteKit, Next.js, React, Tailwind।", stack: ["SvelteKit", "Next.js", "React", "Tailwind", "PostgreSQL"], - impact: { primary: "50k+", secondary: "daily users served" }, + impact: { primary: "560+", secondary: "products in our own live store" }, color: "violet", + demo: "https://glamourstouch.com", }, { id: "ai-agent-automation", name: "AI Agent & Automation", nameBn: "এআই এজেন্ট ও অটোমেশন", kind: "Core Service", + kindBn: "কোর সার্ভিস", description: - "Custom AI agents that triage, decide, and execute — integrated with your tools via n8n, Anthropic, and OpenAI.", - stack: ["Anthropic Claude", "n8n", "LangGraph", "Node.js", "Hono"], - impact: { primary: "1.2M+", secondary: "agent runs / month" }, + "Custom AI agents that triage, decide, and execute — integrated with your enterprise workflows via n8n, Vertex AI, and Google Gemini.", + descriptionBn: + "কাস্টম এআই এজেন্ট যা নিজে বিচার করে, সিদ্ধান্ত নেয় ও কাজ সম্পন্ন করে — n8n, Vertex AI ও Google Gemini-এর মাধ্যমে আপনার টুলসের সাথে যুক্ত।", + stack: ["Google Gemini", "Vertex AI", "n8n", "LangGraph", "Node.js", "Hono"], + impact: { primary: "24/7", secondary: "our own agent, answering real customers" }, color: "cyan", + demo: "https://demo-agenticai-website.vercel.app", }, { id: "web3-blockchain", name: "Web3 & Blockchain", nameBn: "ওয়েব৩ ও ব্লকচেইন", kind: "Specialist Service", + kindBn: "স্পেশালিস্ট সার্ভিস", description: "Wallets, smart contracts, multi-chain bridges, and on-chain audit trails. Gasless UX that hides complexity from end users.", + descriptionBn: + "ওয়ালেট, স্মার্ট কন্ট্রাক্ট, মাল্টি-চেইন ব্রিজ, এবং অন-চেইন অডিট ট্রেইল। Gasless UX যা জটিলতা ইউজারের কাছ থেকে লুকিয়ে রাখে।", stack: ["Solidity", "viem", "wagmi", "Cloudflare Workers"], impact: { primary: "12 chains", secondary: "EVM + Solana" }, color: "green", + demo: "https://demo-cryptotradeanalysis-website.vercel.app", }, { id: "mt5-ea-trading", name: "MT5 EA & Trading Automation", nameBn: "MT5 EA ও ট্রেডিং অটোমেশন", kind: "Specialist Service", + kindBn: "স্পেশালিস্ট সার্ভিস", description: "Expert Advisors, real-time P&L dashboards, risk envelopes, and one-click kill switches for MetaTrader 5 platforms.", + descriptionBn: + "Expert Advisor, রিয়েল-টাইম P&L ড্যাশবোর্ড, রিস্ক এনভেলপ, এবং MetaTrader 5 প্ল্যাটফর্মের জন্য এক-ক্লিক kill switch।", stack: ["MQL5", "Go", "ClickHouse", "WebSockets", "React"], - impact: { primary: "<80ms", secondary: "tick-to-render latency" }, + impact: { primary: "MQL5", secondary: "expert advisor development" }, color: "amber", + demo: "https://ea-dashboard-blush.vercel.app", }, { id: "scraping-data-pipeline", name: "Browser Scraping & Data Pipeline", nameBn: "ব্রাউজার স্ক্র্যাপিং ও ডেটা পাইপলাইন", kind: "Specialist Service", + kindBn: "স্পেশালিস্ট সার্ভিস", description: "Playwright/Puppeteer scrapers, proxy rotation, structured data extraction, and ETL pipelines into your DB or warehouse.", + descriptionBn: + "Playwright/Puppeteer স্ক্র্যাপার, প্রক্সি রোটেশন, structured ডেটা এক্সট্র্যাকশন, এবং আপনার DB বা warehouse-এ ETL পাইপলাইন।", stack: ["Playwright", "Puppeteer", "Python", "Airflow", "PostgreSQL"], - impact: { primary: "10M+", secondary: "records extracted / month" }, + impact: { primary: "Playwright", secondary: "production-grade scraping" }, color: "violet", + demo: "https://portfolio-website-tan-six-24.vercel.app", }, { id: "infra-devops", name: "Infrastructure & DevOps", nameBn: "ইনফ্রাস্ট্রাকচার ও ডেভঅপস", kind: "Specialist Service", + kindBn: "স্পেশালিস্ট সার্ভিস", description: "VPS setup, Docker, Coolify, Traefik, CI/CD pipelines, SSL, monitoring, and zero-downtime deploys on your own cloud.", + descriptionBn: + "VPS সেটআপ, Docker, Coolify, Traefik, CI/CD পাইপলাইন, SSL, মনিটরিং, এবং আপনার নিজের cloud-এ zero-downtime ডিপ্লয়।", stack: ["Docker", "Coolify", "Traefik", "GitHub Actions", "PostgreSQL"], - impact: { primary: "99.98%", secondary: "uptime maintained" }, + impact: { primary: "11+", secondary: "apps running on our own VPS" }, color: "cyan", }, + { + id: "meta-ads-ai", + name: "AI-Powered Meta Ads", + nameBn: "এআই-চালিত মেটা অ্যাডস", + kind: "Growth Service", + kindBn: "গ্রোথ সার্ভিস", + badge: "NEW · Meta MCP", + description: + "AI agents connected directly to Meta's official API — optimizing bids, rotating creatives, and reallocating budgets every 15 minutes. Not a human checking ads twice a day. A system that never sleeps.", + descriptionBn: + "Meta-এর official API-এর সাথে সরাসরি যুক্ত এআই এজেন্ট — প্রতি ১৫ মিনিটে bid অপ্টিমাইজ করে, creative পাল্টায়, বাজেট পুনর্বণ্টন করে। দিনে দুইবার মানুষ চেক করার মতো না — এমন একটা সিস্টেম যা কখনো ঘুমায় না।", + stack: ["Meta MCP", "Meta Ads API", "n8n", "Gemini AI", "Vertex AI"], + impact: { primary: "Official", secondary: "Meta MCP · direct API access" }, + color: "rose", + highlights: [ + "Real-time bid & budget optimization every 15 min", + "100+ ad variants A/B tested simultaneously by AI", + "Automated audience expansion & lookalike generation", + "Creative fatigue detection — pauses before burnout", + "Daily AI-written performance reports to your inbox", + "Full Meta API access via official MCP integration", + ], + highlightsBn: [ + "প্রতি ১৫ মিনিটে রিয়েল-টাইম bid ও বাজেট অপ্টিমাইজেশন", + "১০০+ অ্যাড ভ্যারিয়েন্ট একসাথে এআই দিয়ে A/B টেস্ট", + "স্বয়ংক্রিয় audience expansion ও lookalike generation", + "Creative fatigue detection — burnout হওয়ার আগেই থামায়", + "প্রতিদিন এআই-লিখিত পারফরম্যান্স রিপোর্ট আপনার ইনবক্সে", + "অফিসিয়াল MCP integration-এর মাধ্যমে সম্পূর্ণ Meta API অ্যাক্সেস", + ], + }, + { + id: "whatsapp-messenger-bot", + name: "WhatsApp & Messenger Sales Bot", + nameBn: "হোয়াটসঅ্যাপ ও মেসেঞ্জার সেলস বট", + kind: "Automation · Live", + kindBn: "অটোমেশন · লাইভ", + badge: "LIVE · Try it on WhatsApp", + description: + "A Bengali sales assistant that answers your customers 24/7 on WhatsApp and Messenger — with the real product photo, the real price, and the real discount pulled straight from your own database. It takes the order too. Running live on our own shop right now; message it and see.", + descriptionBn: + "একটা বাংলা সেলস অ্যাসিস্ট্যান্ট যা WhatsApp ও Messenger-এ আপনার কাস্টমারদের ২৪/৭ উত্তর দেয় — আসল প্রোডাক্ট ছবি, আসল দাম, আসল ছাড় সহ, সরাসরি আপনার নিজের ডেটাবেস থেকে। অর্ডারও নেয়। আমাদের নিজের দোকানে এখনই লাইভ চলছে; মেসেজ করে দেখুন।", + stack: ["WhatsApp Cloud API", "Meta Graph API", "Cloudflare Workers", "n8n", "Gemini", "Supabase"], + impact: { primary: "24/7", secondary: "replies in Bengali, in seconds" }, + color: "emerald", + highlights: [ + "Prices and photos come from your database — the AI never types a price, so it cannot quote a wrong one", + "Sends the actual product photo with every answer, not a link", + "Captures the full order — name, address, phone — straight into your system", + "Remembers the conversation, so \"ওইটা দেখান\" works", + "Flags suspicious COD orders and hands angry customers to a human", + ], + highlightsBn: [ + "দাম ও ছবি আসে আপনার ডেটাবেস থেকে — এআই কখনো নিজে দাম লেখে না, তাই ভুল দাম বলার সুযোগই নেই", + "প্রতিটা উত্তরে আসল প্রোডাক্ট ছবি পাঠায়, শুধু লিংক না", + "সম্পূর্ণ অর্ডার — নাম, ঠিকানা, ফোন — সরাসরি আপনার সিস্টেমে জমা করে", + "কথোপকথন মনে রাখে, তাই \"ওইটা দেখান\" বললেও বোঝে", + "সন্দেহজনক COD অর্ডার চিহ্নিত করে ও রাগান্বিত কাস্টমারকে মানুষের কাছে পাঠায়", + ], + demo: "https://wa.me/8801712426871?text=Medicube%20er%20ki%20ki%20product%20ache%3F", + }, + { + id: "social-autopilot", + name: "Social Media Autopilot", + nameBn: "সোশ্যাল মিডিয়া অটোপাইলট", + kind: "Automation · Live", + kindBn: "অটোমেশন · লাইভ", + badge: "LIVE · Running daily", + description: + "Your Facebook page posts itself. Daily product carousels and spotlights, pulled from your own catalog, captioned in Bengali and watermarked automatically — every day, without anyone opening a laptop. Running on our own page right now.", + descriptionBn: + "আপনার Facebook পেজ নিজে থেকেই পোস্ট করে। দৈনিক প্রোডাক্ট carousel ও spotlight, আপনার নিজের ক্যাটালগ থেকে নেওয়া, বাংলায় ক্যাপশন সহ ও স্বয়ংক্রিয়ভাবে watermark করা — প্রতিদিন, কারো ল্যাপটপ না খুলেই। আমাদের নিজের পেজে এখনই চলছে।", + stack: ["n8n", "Meta Graph API", "Supabase", "Sharp", "Gemini"], + impact: { primary: "0", secondary: "minutes of manual posting" }, + color: "blue", + highlights: [ + "Daily multi-product carousel — real photos, real prices from your catalog", + "Bengali captions written for you, watermarked with your brand", + "Every card deep-links to that product's page, not just the homepage", + "Rotates brands and products so the page never looks repetitive", + "Posts keep going out whether you're at the shop or asleep", + ], + highlightsBn: [ + "দৈনিক মাল্টি-প্রোডাক্ট carousel — আসল ছবি, আসল দাম, আপনার ক্যাটালগ থেকে", + "বাংলা ক্যাপশন আপনার জন্য লেখা, আপনার ব্র্যান্ড দিয়ে watermark করা", + "প্রতিটা কার্ড সরাসরি সেই প্রোডাক্টের পেজে নিয়ে যায়, শুধু হোমপেজ না", + "ব্র্যান্ড ও প্রোডাক্ট ঘুরিয়ে দেখায় যাতে পেজ কখনো একঘেয়ে না লাগে", + "আপনি দোকানে থাকুন বা ঘুমান, পোস্ট চলতেই থাকে", + ], + }, + { + id: "ecommerce-full", + name: "Complete Online Shop", + nameBn: "সম্পূর্ণ অনলাইন দোকান", + kind: "Bundle · End to end", + kindBn: "বান্ডল · এন্ড টু এন্ড", + badge: "EVERYTHING IN ONE", + description: + "The whole shop, one roof: the website, the WhatsApp sales bot, courier booking, daily social posts, and Meta ads — built, connected, and run together. This is exactly what we run for our own brand, so you are buying a system that already sells, not a plan.", + descriptionBn: + "পুরো দোকান, এক ছাদের নিচে: ওয়েবসাইট, WhatsApp সেলস বট, কুরিয়ার বুকিং, দৈনিক সোশ্যাল পোস্ট, এবং Meta অ্যাডস — সব তৈরি, সংযুক্ত ও একসাথে চালানো। এটাই আমরা নিজেদের ব্র্যান্ডের জন্য চালাই, তাই আপনি একটা পরিকল্পনা না, একটা already-বিক্রি-করা সিস্টেম কিনছেন।", + stack: ["React", "Supabase", "WhatsApp Cloud API", "n8n", "Meta Ads", "Steadfast"], + impact: { primary: "1", secondary: "team, running all of it" }, + color: "violet", + highlights: [ + "Storefront with real stock, discounts and cash on delivery", + "WhatsApp bot answering and taking orders 24/7 in Bengali", + "Orders flow into one dashboard — website and bot together", + "Courier booking and tracking without leaving the dashboard", + "Daily auto-posts and Meta ad campaigns driving the traffic", + "One team accountable for the whole chain, not five vendors", + ], + highlightsBn: [ + "আসল স্টক, ছাড় ও cash on delivery সহ স্টোরফ্রন্ট", + "WhatsApp বট ২৪/৭ বাংলায় উত্তর দেয় ও অর্ডার নেয়", + "অর্ডার এক ড্যাশবোর্ডে আসে — ওয়েবসাইট ও বট একসাথে", + "ড্যাশবোর্ড থেকে না বেরিয়েই কুরিয়ার বুকিং ও ট্র্যাকিং", + "দৈনিক অটো-পোস্ট ও Meta অ্যাড ক্যাম্পেইন ট্রাফিক আনে", + "পুরো চেইনের জন্য একটাই দায়বদ্ধ টিম, পাঁচটা vendor না", + ], + }, + { + id: "courier-mcp", + name: "Aura Courier MCP", + nameBn: "অরা কুরিয়ার MCP", + kind: "Connector · Live", + kindBn: "কানেক্টর · লাইভ", + badge: "LIVE · MCP Connector", + description: + "Universal Model Context Protocol (MCP) connector for every Bangladesh courier. Plug in your own courier keys, and book & track parcels — Steadfast, Pathao & RedX — straight from an AI conversation. Your shop's logistics, fully agentic.", + descriptionBn: + "বাংলাদেশের প্রতিটা কুরিয়ারের জন্য সর্বজনীন Model Context Protocol (MCP) কানেক্টর। নিজের কুরিয়ার key বসান, আর এআই কথোপকথন থেকেই পার্সেল বুক ও ট্র্যাক করুন — Steadfast, Pathao ও RedX। আপনার লজিস্টিক্স, ফুল্লি এজেন্টিক।", + stack: ["MCP Standard", "Steadfast", "Pathao", "RedX", "TypeScript"], + impact: { primary: "1", secondary: "connector · every courier" }, + color: "amber", + highlights: [ + "Book & track parcels from any AI agent — no dashboard hopping", + "One URL, your own courier keys — nothing stored by us", + "Steadfast & Pathao live · RedX & Paperfly coming", + "Works across Gemini, Antigravity, MCP clients, or hosted API", + "Open source — anyone can add it in seconds", + ], + highlightsBn: [ + "যেকোনো এআই এজেন্ট থেকে পার্সেল বুক ও ট্র্যাক — ড্যাশবোর্ড ঘোরাঘুরি লাগবে না", + "একটা URL, আপনার নিজের কুরিয়ার key — আমরা কিছুই সংরক্ষণ করি না", + "Steadfast ও Pathao লাইভ · RedX ও Paperfly আসছে", + "Gemini, Antigravity ও যেকোনো MCP ক্লায়েন্টে কাজ করে", + "ওপেন সোর্স — যে কেউ কয়েক সেকেন্ডে যোগ করতে পারে", + ], + demo: "https://courier.auraajenticai.cloud", + repo: "https://github.com/auraajenticai/aura-courier-mcp", + }, ], + // Empty on purpose -- the old array here was fabricated (invented names, companies and quotes + // that never existed). Never repopulate with placeholder content; only add a testimonial once a + // real client has actually given one. The Testimonials component renders an honest + // "new agency, real results coming soon" state when this is empty. + testimonials: [], + + pricingTiers: [ + { + name: "Starter", + badge: "Self-Serve", + price: 19, + period: "/month", + description: "Autonomous AI sales agent for growing online shops and brands.", + color: "violet", + features: [ + "1 Autonomous AI Sales Agent (WhatsApp or Messenger)", + "1,000 Autonomous Conversations / month", + "Bengali & English Natural Language Processing (Benglish supported)", + "Aura Courier MCP Integration (Steadfast & Pathao)", + "Automated Consignment Tracking & Real-Time Status", + "Omnichannel Live Inbox with 1-Tap Human Handoff", + "Standard Email & Community Support", + ], + cta: "Start 14-Day Free Trial", + href: "https://client.auraajenticai.cloud/#auth", + }, + { + name: "Growth", + badge: "Most Popular", + price: 49, + period: "/month", + description: "Full omnichannel closing machine, COD fraud defense & multi-carrier MCP.", + color: "cyan", + features: [ + "Omnichannel AI Agent (WhatsApp + Messenger + Instagram + Facebook Comments)", + "Unlimited Conversations & 24/7 Closing Engine", + "Automated COD Fraud Shield & Cancel Risk Prediction", + "Aura Courier MCP: Multi-Carrier Smart Routing (Steadfast, Pathao, RedX, Paperfly)", + "Google Maps Rooftop Geocoding & Zone/Delivery Fee Engine", + "28-Day Automated Customer Retention & Refill Machine", + "Full Client Dashboard, Live Analytics Studio & CSV Export", + "Priority WhatsApp & Live Chat Support", + ], + cta: "Deploy Growth Plan", + href: "https://client.auraajenticai.cloud/#auth", + }, + { + name: "Enterprise", + badge: "Custom Cloud", + price: null, + period: null, + description: "Dedicated enterprise infrastructure, custom LLM fine-tuning & ERP integration.", + color: "amber", + features: [ + "Custom Fine-Tuned Domain LLMs (Retail, Healthcare, Hardware Repair)", + "Dedicated Isolated VPS / Private Cloud Infrastructure", + "Custom ERP, CRM & Warehouse Management System Webhooks", + "Multi-Tenant Bot Architecture for Agency & Franchise Networks", + "High-Throughput Dedicated Meta WABA & Cloud API Gateways", + "Dedicated Account Engineer & 99.9% Uptime SLA", + "24/7 Emergency Incident Escalation", + "Direct Engineer Access via WhatsApp & Slack", + ], + cta: "Book Architecture Call", + href: "mailto:ceo@auraajenticai.cloud?subject=Enterprise SaaS Consultation", + }, + ], + + // Empty on purpose -- the old array here was fabricated (fake publish dates predating Aura's own + // founding, an invented "18 months of production data" claim, and made-up client numbers matching + // the fake case studies). Never repopulate with placeholder posts; only publish once we've written + // something real. The blog page renders an honest "coming soon" state when this is empty. + blogArticles: [], + agentRun: [ { t: 0, kind: "system", text: "agent.session :: id=run_8af3e2 model=claude-sonnet-4.5" }, { t: 350, kind: "user", text: 'task: "Reconcile yesterday\'s payouts. Flag anything > $5k or > 3σ from the cohort baseline."' }, @@ -153,41 +385,127 @@ const PORTFOLIO_DATA = { { t: 5400, kind: "system", text: "session.end :: tokens=8,412 · cost=$0.083 · duration=5.4s" }, ], + ownProducts: [ + { + id: "snehalata", + name: "Snehalata", + tagline: "AI-Powered Clothing Ecosystem", + taglineBn: "এআই-চালিত ক্লথিং ইকোসিস্টেম", + description: + "Aura's own multi-vendor clothing marketplace for Bangladesh. Vendors register, list products, and sell — while Gemini AI handles style refinement, virtual try-on, fraud audits, and a 24/7 Bengali-language chat assistant. Built end-to-end on Aura's stack.", + descriptionBn: + "বাংলাদেশের জন্য Aura-র নিজস্ব multi-vendor ক্লথিং মার্কেটপ্লেস। Vendor-রা রেজিস্টার করে, প্রোডাক্ট লিস্ট করে, বিক্রি করে — আর Gemini AI স্টাইল রিফাইনমেন্ট, ভার্চুয়াল ট্রাই-অন, fraud audit, এবং ২৪/৭ বাংলা চ্যাট অ্যাসিস্ট্যান্ট সামলায়। সম্পূর্ণ Aura-র নিজের স্ট্যাকে তৈরি।", + url: "https://www.snehalata.com", + badge: "Ecosystem", + stack: ["SvelteKit", "Supabase", "Gemini AI", "Tailwind", "Vercel"], + features: [ + "Multi-vendor marketplace with AI-powered vendor onboarding audit", + "Gemini-powered virtual try-on and style transfer for every product", + "24/7 Bengali AI chat assistant for shopping guidance", + "Bangladesh district-level vendor & product filtering", + "Full order lifecycle: placement → quality check → delivery tracking", + "CEO & vendor dashboards with real-time ecosystem stats", + ], + featuresBn: [ + "এআই-চালিত vendor onboarding audit সহ multi-vendor মার্কেটপ্লেস", + "প্রতিটা প্রোডাক্টের জন্য Gemini-চালিত ভার্চুয়াল ট্রাই-অন ও স্টাইল ট্রান্সফার", + "শপিং গাইডেন্সের জন্য ২৪/৭ বাংলা এআই চ্যাট অ্যাসিস্ট্যান্ট", + "বাংলাদেশ জেলা-ভিত্তিক vendor ও প্রোডাক্ট ফিল্টারিং", + "সম্পূর্ণ অর্ডার লাইফসাইকেল: অর্ডার → কোয়ালিটি চেক → ডেলিভারি ট্র্যাকিং", + "রিয়েল-টাইম ইকোসিস্টেম পরিসংখ্যান সহ CEO ও vendor ড্যাশবোর্ড", + ], + color: "violet", + }, + { + id: "glamourstouch", + name: "Glamours Touch", + tagline: "Beauty & Lifestyle E-Commerce", + taglineBn: "বিউটি ও লাইফস্টাইল ই-কমার্স", + description: + "Aura's own live e-commerce brand in the beauty & lifestyle space. We built it, we run it, we sell from it — end to end. Custom storefront, product catalog, cart, payment integration, and admin dashboard. Not a demo. A real business.", + descriptionBn: + "বিউটি ও লাইফস্টাইল সেক্টরে Aura-র নিজস্ব লাইভ ই-কমার্স ব্র্যান্ড। আমরাই বানিয়েছি, আমরাই চালাই, আমরাই বিক্রি করি — শুরু থেকে শেষ পর্যন্ত। কাস্টম স্টোরফ্রন্ট, প্রোডাক্ট ক্যাটালগ, কার্ট, পেমেন্ট ইন্টিগ্রেশন, এবং অ্যাডমিন ড্যাশবোর্ড। কোনো ডেমো না। একটা আসল ব্যবসা।", + url: "https://glamourstouch.com", + badge: "Live Product", + stack: ["React", "Vite", "Supabase", "Tailwind", "Vercel"], + features: [ + "560+ product catalog with real stock and discount pricing", + "Cash on delivery across Bangladesh, order tracking built in", + "WhatsApp & Messenger sales bot answering customers 24/7 in Bengali", + "Mobile-first responsive storefront design", + "Admin dashboard for orders, products & analytics", + "Daily automated Facebook product posts — no manual posting", + ], + featuresBn: [ + "৫৬০+ প্রোডাক্ট ক্যাটালগ, আসল স্টক ও ছাড়ের দাম সহ", + "পুরো বাংলাদেশে cash on delivery, order tracking বিল্ট-ইন", + "WhatsApp ও Messenger সেলস বট ২৪/৭ বাংলায় কাস্টমারদের উত্তর দেয়", + "মোবাইল-ফার্স্ট রেসপনসিভ স্টোরফ্রন্ট ডিজাইন", + "অর্ডার, প্রোডাক্ট ও অ্যানালিটিক্সের জন্য অ্যাডমিন ড্যাশবোর্ড", + "দৈনিক স্বয়ংক্রিয় Facebook প্রোডাক্ট পোস্ট — ম্যানুয়াল পোস্টিং লাগে না", + ], + color: "rose", + }, + ], + + // Empty on purpose -- the old array here was fabricated (invented clients, quotes and metrics + // like "FinSync BD" and "AlphaEdge Capital" that never existed). Never repopulate with placeholder + // content; only add a case study once a real, verifiable project is done. The CaseStudiesPage + // component renders an honest "new agency, real results coming soon" state when this is empty. + caseStudies: [], + + // Real Aura milestones, dated -- not an individual's job history. Add a new entry only when + // something actually, verifiably happened; never backfill a "years of experience" narrative. experience: [ { - year: "2024 — Present", - role: "Founder & Principal Engineer", - company: "Aura Agentic Cloud", - kind: "Product", - detail: "Building the agent runtime layer — orchestration, evals, observability — used by 12 enterprise teams.", + year: "Sep 2026", + role: "Bangladesh's 1st Courier MCP Engine Launched", + roleBn: "বাংলাদেশের প্রথম কুরিয়ার MCP ইঞ্জিন চালু", + company: "Aura Logistics MCP", + kind: "Innovation", + kindBn: "উদ্ভাবন", + detail: "Launched Bangladesh's first Model Context Protocol (MCP) carrier orchestration hub integrating Steadfast, Pathao, RedX, Paperfly & Google Maps routing.", + detailBn: "Steadfast, Pathao, RedX, Paperfly ও Google Maps রাউটিং সমন্বয়ে দেশের প্রথম Model Context Protocol (MCP) লজিস্টিক হাব চালু।", }, { - year: "2022 — 2024", - role: "Staff Full-Stack Engineer", - company: "Confidential · Fintech", - kind: "Contract", - detail: "Led the rebuild of an MLM compensation engine, ran the migration from monolith to multi-tenant.", + year: "Aug 2026", + role: "Meta Tech Provider status", + roleBn: "Meta Tech Provider status অর্জন", + company: "Aura Ajentic AI", + kind: "Milestone", + kindBn: "মাইলফলক", + detail: "Approved to onboard other businesses' WhatsApp Business numbers, on top of our own.", + detailBn: "নিজের ছাড়াও অন্য ব্যবসার WhatsApp Business নম্বর onboard করার অনুমোদন পেয়েছি।", }, { - year: "2021 — 2022", - role: "Senior Engineer · Web3", - company: "Stealth DeFi protocol", - kind: "Contract", - detail: "Wallet UX, signer abstraction, on-chain settlement rails. Shipped before the protocol announced.", + year: "Aug 2026", + role: "WhatsApp Business API approved", + roleBn: "WhatsApp Business API অনুমোদিত", + company: "Aura Ajentic AI", + kind: "Milestone", + kindBn: "মাইলফলক", + detail: "Meta approved our WhatsApp messaging integration — our own sales bot went fully live.", + detailBn: "Meta আমাদের WhatsApp messaging integration অনুমোদন করেছে — আমাদের নিজের sales বট পুরোপুরি live হয়েছে।", }, { - year: "2019 — 2021", - role: "Full-Stack Engineer", - company: "Series-B SaaS", - kind: "Full-time", - detail: "Owned the dashboard surface area — billing, RBAC, integrations. Pushed app from 4k to 28k DAU.", + year: "Jul 2026", + role: "First paying client signed", + roleBn: "প্রথম paying client", + company: "Applix BD", + kind: "Client", + kindBn: "ক্লায়েন্ট", + detail: "A Dhaka mobile-parts retailer became our first client — automated their Facebook posting and ad ops.", + detailBn: "ঢাকার একটা mobile-parts retailer আমাদের প্রথম client হন — তাদের Facebook posting আর ad কাজ automate করেছি।", }, { - year: "2018 — 2019", - role: "Software Engineer", - company: "Agency · Remote", - kind: "Full-time", - detail: "Cut my teeth shipping React + Node products across e-commerce, logistics, and edtech.", + year: "Jul 2026", + role: "Aura Ajentic AI founded", + roleBn: "Aura Ajentic AI প্রতিষ্ঠা", + company: "Dhaka, Bangladesh", + kind: "Founding", + kindBn: "প্রতিষ্ঠা", + detail: "Started building our own live products first — Glamour's Touch (K-beauty e-commerce) and Snehalata (AI marketplace) — before pitching anyone else.", + detailBn: "আগে নিজেদের live প্রোডাক্ট বানানো শুরু করি — Glamour's Touch (K-beauty e-commerce) আর Snehalata (AI marketplace) — অন্য কাউকে pitch করার আগেই।", }, ], }; diff --git a/src/hero.jsx b/src/hero.jsx index 410ff9c..d13889d 100644 --- a/src/hero.jsx +++ b/src/hero.jsx @@ -120,10 +120,30 @@ const TerminalRain = () => { ); }; +const HERO_TXT = { + en: { + pill: "Accepting new projects · Q3 2026", + getStarted: "Get Started Free", + viewServices: "View Services", + lastShipped: "Last shipped: 2 days ago", + }, + bn: { + pill: "নতুন প্রজেক্ট নেওয়া হচ্ছে · Q3 2026", + getStarted: "ফ্রি শুরু করুন", + viewServices: "সার্ভিস দেখুন", + lastShipped: "সর্বশেষ শিপড: ২ দিন আগে", + }, +}; + +// Same self-serve destination as the nav's "Get Started" -- lands a fresh signup straight on the +// client portal's service catalog instead of a blank dashboard. +const HERO_REGISTER_URL = "https://auth.auraajenticai.cloud/register?next=" + encodeURIComponent("https://client.auraajenticai.cloud/services"); + const Hero = ({ headlinePrefix, headlineSuffix, lang = "en" }) => { const D = PORTFOLIO_DATA; const prefix = headlinePrefix || "Agentic AI &"; const suffix = headlineSuffix || "automation engineer"; + const t = HERO_TXT[lang] || HERO_TXT.en; return (
{ boxShadow: "0 0 10px var(--good)", animation: "pulse-dot 2s infinite", }} /> - Accepting new projects · Q3 2026 + {t.pill}
{/* headline */} @@ -189,39 +209,30 @@ const Hero = ({ headlinePrefix, headlineSuffix, lang = "en" }) => { lineHeight: 1.55, color: "var(--text-dim)", }}> - {D.brand.tagline} -

-

- {D.brand.taglineBn} + {lang === "bn" ? D.brand.taglineBn : D.brand.tagline}

{/* CTAs */} @@ -252,7 +263,7 @@ const Hero = ({ headlinePrefix, headlineSuffix, lang = "en" }) => { · {D.brand.domain} · - Last shipped: 2 days ago + {t.lastShipped} {/* metric strip */} @@ -282,7 +293,7 @@ const Hero = ({ headlinePrefix, headlineSuffix, lang = "en" }) => { fontFamily: "var(--font-mono)", textTransform: "uppercase", letterSpacing: "0.06em", - }}>{m.label} + }}>{lang === "bn" ? m.labelBn : m.label} ))} diff --git a/src/icons.jsx b/src/icons.jsx index 5632ffb..b917d80 100644 --- a/src/icons.jsx +++ b/src/icons.jsx @@ -43,17 +43,23 @@ const Icons = { Send: (p) => , Globe: (p) => , Terminal: (p) => , - Logo: ({ size = 28 }) => ( - - - - - - - - - - + WhatsApp: (p) => , + Logo: ({ size = 28, full = false }) => ( + Aura Ajentic AI { e.currentTarget.style.display = "none"; }} + /> ), }; diff --git a/src/nav.jsx b/src/nav.jsx index 8fc8a40..00d14ea 100644 --- a/src/nav.jsx +++ b/src/nav.jsx @@ -1,7 +1,27 @@ // Top nav — minimal, sticky, blurred — mobile-responsive -const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang }) => { +const NAV_LINKS = [ + { id: "services", label: "Services", labelBn: "সার্ভিস", url: "#/services" }, + { id: "case-studies", label: "Case Studies", labelBn: "কেস স্টাডি", url: "#/case-studies" }, + { id: "pricing", label: "Pricing", labelBn: "মূল্য", url: "#/pricing" }, + { id: "blog", label: "Blog", labelBn: "ব্লগ", url: "#/blog" }, + { id: "contact", label: "Contact", labelBn: "যোগাযোগ", url: "#/contact" }, +] + +const NAV_TXT = { + en: { search: "Search", getQuote: "Get a Quote", clientLogin: "Client Login", getStarted: "Get Started" }, + bn: { search: "খুঁজুন", getQuote: "কোট নিন", clientLogin: "ক্লায়েন্ট লগইন", getStarted: "শুরু করুন" }, +}; + +// Where a self-serve account should land right after signing up -- the client portal's own +// service catalog, not a blank dashboard. aura-auth's /register already reads and honors `next`. +const REGISTER_URL = "https://auth.auraajenticai.cloud/register?next=" + encodeURIComponent("https://client.auraajenticai.cloud/services"); + +const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang, route }) => { const [scrolled, setScrolled] = React.useState(false); const [menuOpen, setMenuOpen] = React.useState(false); + const links = NAV_LINKS; + const t = NAV_TXT[lang] || NAV_TXT.en; + const bn = lang === "bn"; React.useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 12); @@ -9,14 +29,6 @@ const Nav = ({ onCmdK, theme, onToggleTheme, accent, lang, onToggleLang }) => { return () => window.removeEventListener("scroll", onScroll); }, []); - const links = [ - { id: "work", label: "Services" }, - { id: "stack", label: "Stack" }, - { id: "agents", label: "Agents" }, - { id: "timeline", label: "Timeline" }, - { id: "contact", label: "Contact" }, - ]; - return ( <>