Technical stack
Ce contenu n’est pas encore disponible dans votre langue.
This page lists the main technologies used in the project, with links to their documentation. Specific version
information can be found in the project’s dependency files (composer.lock, package.json, etc.). The architecture
diagram below summarizes how these services interact.
flowchart LR
USER[[Users]]
subgraph EXT[External Resources]
direction TB
RDAP[RDAP Servers]
PROVIDER[Supported Registrar API]
end
subgraph INFRA[Managed Infrastructure]
RP[[Reverse Proxy]]
subgraph APP_ZONE[Application]
DW(Domain Watchdog)
end
subgraph DATA[Persistence & State]
PG[(PostgreSQL)]
INFL[(InfluxDB)]
REDIS[(Redis)]
end
OAUTH(OAuth 2.0 Provider)
end
USER <==> |HTTPS| RP
RP <==> |HTTP| DW
DW --> |Read/Write| PG
DW --> |Store Metrics| INFL
DW --> |Cache/Lock| REDIS
DW <--> |Auth Check| OAUTH
DW -.-> |Query Domain| RDAP
DW -.-> |API Actions| PROVIDER
Backend
Section titled “Backend”Framework
Section titled “Framework”The programming language is PHP.
The backend is developed using the Symfony framework (documentation).
The API is made possible by the API Platform project (documentation).
SQL database
Section titled “SQL database”This project requires a PostgreSQL database (documentation).
Other database types cannot be used because some migrations were specifically written to leverage the performance of this database management system.
Key-value database
Section titled “Key-value database”A Redis-compatible key-value database is required to:
- Cache certain values
- Implement locks to limit the possibility of conditional raises
- Store messages to be distributed to workers to process asynchronous actions. For example: updating domain names in a Watchlist on a high-priority RDAP client queue.
Time Series database
Section titled “Time Series database”The InfluxDB database is optional. A data point is added for the following events:
- RDAP requests from your instance: response time, requested domain name, HTTP status code, IP address of the RDAP server, etc.
- User notifications: adding events to a domain name, changing EPP statuses, etc.
SSO authentication
Section titled “SSO authentication”An OAuth 2.0 server is not required to authenticate users.
Using Single Sign-On (SSO) allows you to delegate user authentication to a third party. This can be useful if you only want people within your organization to be able to use this project instance. Furthermore, you can then configure advanced security policies such as passwordless login, passkeys, multifactor authentication, and more.
Frontend
Section titled “Frontend”Framework
Section titled “Framework”The language for frontend development is TypeScript.
The framework used for the frontend is React (documentation).
Component Library
Section titled “Component Library”The component library used is Ant Design (documentation).