mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
Update .env.example with a new encryption key, correct the Quickstart Guides link in README.md, and enhance backend folder structure documentation with new sections for BDD tests and additional service details.
This commit is contained in:
@@ -5,28 +5,47 @@ title: 'Backend folder structure'
|
||||
```
|
||||
├── scripts
|
||||
├── e2e-test
|
||||
├── bdd
|
||||
└── src/
|
||||
├── @types/
|
||||
│ ├── knex.d.ts
|
||||
│ └── fastify.d.ts
|
||||
│ ├── fastify.d.ts
|
||||
│ ├── ...
|
||||
├── db/
|
||||
│ ├── migrations
|
||||
│ ├── schemas
|
||||
│ └── seed
|
||||
│ └── seeds
|
||||
├── keystore/
|
||||
├── lib/
|
||||
│ ├── api-docs
|
||||
│ ├── aws
|
||||
│ ├── axios
|
||||
│ ├── base64
|
||||
│ ├── casl
|
||||
│ ├── certificates
|
||||
│ ├── config
|
||||
│ ├── crypto
|
||||
│ ├── dates
|
||||
│ ├── delay
|
||||
│ ├── error-codes
|
||||
│ ├── errors
|
||||
│ ├── files
|
||||
│ ├── fn
|
||||
│ ├── date
|
||||
│ └── config
|
||||
│ ├── ...
|
||||
├── queue
|
||||
├── server/
|
||||
│ ├── routes/
|
||||
│ │ ├── v1
|
||||
│ │ └── v2
|
||||
│ │ ├── v2
|
||||
│ │ ├── v3
|
||||
│ │ └── v4
|
||||
│ ├── plugins
|
||||
│ └── config
|
||||
│ ├── config
|
||||
│ └── lib
|
||||
├── services/
|
||||
│ ├── auth
|
||||
│ ├── org
|
||||
│ ├── ...
|
||||
│ └── project/
|
||||
│ ├── project-service.ts
|
||||
│ ├── project-types.ts
|
||||
@@ -42,19 +61,23 @@ Contains reusable scripts for backend automation, like running migrations and ge
|
||||
### `backend/e2e-test`
|
||||
Integration tests for the APIs.
|
||||
|
||||
### `backend/bdd`
|
||||
Behavior-Driven Development (BDD) tests using Python and Gherkin feature files.
|
||||
|
||||
### `backend/src`
|
||||
The source code of the backend.
|
||||
|
||||
- `@types`: Type definitions for libraries like Fastify and Knex.
|
||||
- `db`: Knex.js configuration for the database, including migration, seed files, and SQL type schemas.
|
||||
- `lib`: Stateless, reusable functions used across the codebase.
|
||||
- `@types`: Type definitions for libraries like Fastify, Knex, and other third-party dependencies.
|
||||
- `db`: Knex.js configuration for the database, including migrations, seed files, and SQL type schemas.
|
||||
- `keystore`: Key-value store abstraction layer supporting Redis and PostgreSQL for application caching, distributed locking, and coordination.
|
||||
- `lib`: Stateless, reusable functions used across the codebase, organized by functionality (crypto, config, dates, etc.).
|
||||
- `queue`: Infisical's queue system based on BullMQ.
|
||||
|
||||
### `src/server`
|
||||
|
||||
- Scope anything related to Fastify/service here.
|
||||
- Includes routes, Fastify plugins, and server configurations.
|
||||
- The routes folder contains various versions of routes separated into v1, v2, etc.
|
||||
- Includes routes, Fastify plugins, server configurations, and server-specific utilities.
|
||||
- The routes folder contains various versions of routes separated into v1, v2, v3, v4, etc.
|
||||
|
||||
### `src/services`
|
||||
|
||||
|
||||
@@ -39,10 +39,10 @@ Use the custom Infisical function `ormify` in `src/lib/knex` for simple database
|
||||
|
||||
## Connecting the Service Layer to the Server Layer
|
||||
|
||||
Server-related logic is handled in `/src/server`. To connect the service layer to the server layer, we use Fastify plugins for dependency injection:
|
||||
Server-related logic is handled in `/src/server`. To connect the service layer to the server layer, we use Fastify's dependency injection pattern:
|
||||
|
||||
1. Add the service type in the `fastify.d.ts` file under the `service` namespace of a FastifyServerInstance type.
|
||||
2. In `/src/server/routes/index.ts`, instantiate the required dependencies for `feature-x`, such as the DAL and service layers, and then pass them to `fastify.register("service,{...dependencies})`.
|
||||
1. Add the service type in `/src/@types/fastify.d.ts` under the `services` namespace of the `FastifyInstance` interface.
|
||||
2. In `/src/server/routes/index.ts`, instantiate the required dependencies for `feature-x` (such as the DAL and service layers), and then add the service instance to the `server.decorate()` call, where all services are registered for dependency injection.
|
||||
3. This makes the service layer accessible within all routes under the Fastify service instance, accessed via `server.services.<registered service name>.<function>`.
|
||||
|
||||
## Writing API Routes
|
||||
|
||||
Reference in New Issue
Block a user