Monitoring
Track container health, CPU, memory, disk, HTTP errors, and dependency failures. Alert before host saturation.
Documentation
Architecture, environments, deployment workflows, and operational runbooks for the Zealix platform.
Zealix is an AI-powered restaurant management platform built to help restaurant teams grow revenue and operate efficiently. It combines three core experiences:
The application runs on Next.js 16 and React 19. AWS provides compute, PostgreSQL, object storage, transactional email, secrets, and managed foundation models.
Use Node.js with npm. The repository includes a lockfile and does not declare another package manager.
git clone git@github.com:cesarfrancots/ZealixLanding.git
cd ZealixLanding
npm ci
cp .env.example .env.local
npm run devThe development server starts at http://localhost:3000. Keep local credentials in .env.local; never commit them.
.env.example is the configuration inventory. Coolify owns deployed environment variables, while AWS Secrets Manager stores secrets that should not live in repository or container metadata.
Zealix is a single Next.js application with clear service boundaries. App Router pages and route handlers run on Coolify-managed containers; external state stays in AWS-managed services.
Better Auth manages sessions, email verification, password reset, and role checks. Preserve trusted-origin validation and authorize every admin or customer operation on the server. UI visibility is never an authorization boundary.
PostgreSQL on Amazon RDS is the source of truth. Runtime queries use parameterized SQL through pg. Applied migrations are checksum-tracked: add a new numbered migration instead of editing an existing one.
DATABASE_URL='postgresql://…' npm run db:migrate
DATABASE_URL='postgresql://…' npm run db:bootstrap-admin
DATABASE_URL='postgresql://…' npm run db:seed-knowledgeZea uses Amazon Nova for conversation and Titan embeddings for retrieval. Bundled Markdown knowledge provides a controlled fallback when vector search is unavailable. Answers must not invent prices, integrations, or operational guarantees.
Amazon S3 stores uploads privately by default. Validate filenames, content types, and object keys at the boundary. Serve private content with short-lived signed URLs and reserve CloudFront public delivery for explicitly approved prefixes.
Amazon SES delivers account and support messages. Staging must never send to real customer lists: use test recipients or suppress delivery at the environment boundary.
Production and staging share an EC2 host, but not mutable data, credentials, origins, or integration behavior.
| Aspect | Production | Staging |
|---|---|---|
| Purpose | Live traffic and customer data | Integration testing and validation |
| Branch | master | staging |
| Domain | zealix.io | landing-staging.zealix.io |
| Data | Primary database and S3 namespace | Isolated database and storage namespace |
| Access | Restricted production roles | Engineering and QA access |
Changes move through pull requests and automated checks before they reach either persistent environment.
Develop in an isolated worktree from fresh origin/master.
Merge a reviewed PR into staging and validate the deployment.
Promote the verified commit to master through a second PR.
Revert the failing commit through Git and redeploy the last known-good version in Coolify. Database migrations require a documented forward fix or an intentionally designed down migration; never improvise a destructive rollback against customer data.
Track container health, CPU, memory, disk, HTTP errors, and dependency failures. Alert before host saturation.
Enable automated RDS backups and verify restore procedures. A backup is only useful after a successful restore test.
Agents should make the smallest safe change, preserve user work, and leave evidence that the result works.
AGENTS.md before editing and reuse existing patterns.codex/ branch; ship through a pull request.