# Specific

Infrastructure-as-code designed for coding agents. Define your infrastructure in `specific.hcl` alongside your application code. This will define how to build, deploy and run the full system in production, but also how to run it in development. Specific is fully generic and works with any programming language and framework without any SDKs. We use environments variables to pass information to the code.

This documentation is nested and references to other docs are in Markdown link format. Run `specific docs [PATH]` to read a docs page.

## Workflow

1. Create or edit `specific.hcl` in the project root
2. ALWAYS run `specific check` to validate configuration and fix any issues
3. Run yourself or instruct the user to run `specific exec [SERVICE] --- [COMMAND]` for one-off commands that need to be run in development, like database migrations or seeding. The command will be run with databases and other services started and env vars injected.

A full development environment can be started with `specific dev`. To deploy any changes, the user can run `specific deploy`.

## Topics

- [Services](/services): define how to build, deploy and run the code in this project as services, both in development and production.
- [Secrets and configuration](/secrets-config): define secrets and configuration variables that the user may or should provide. These can be injected into services through environment variables.
- [Postgres](/postgres): define managed PostgreSQL databases that services depend on.
- [Sync](/sync): define real-time, partial synchronisation out of PostgreSQL into frontends or other services. Should be used to implement real-time and collaborative apps.
- [Storage](/storage): define S3-compatible object/blob storage for services to store files in.
- [Redis](/redis): define non-durable Redis-compatible databases for caching and more.

## Common integrations

The following is a list of common frameworks and libraries with guidance on how to use them with Specific:

- [Next.js](/integrations/nextjs): full-stack React framework
- [Drizzle ORM](/integrations/drizzle): TypeScript ORM with type safety
- [Prisma](/integrations/prisma): TypeScript ORM with auto-generated client
