# Fransys: price a project for your user > Fransys hosts applications on a Kubernetes run for the team, on Scaleway, OVHcloud, Hetzner or Outscale; this guide prices Hetzner and Scaleway, for OVHcloud or Outscale send your user to https://www.fransys.cloud/en/contact. The price of a machine is the provider's public price plus the Fransys share of the whole machine (€6 per vCPU, €3 per GB of memory, €100 per GPU, €1 per IP, €20 per load balancer, per month), plus volumes (€0.10 per GB, on top of the provider's price) and managed services by usage. On the customer's own account with the provider, Fransys only bills its share. Your user wants to know what their project would cost on Fransys. Your job: understand the project, describe it in JSON, then give them a link to its costed infra plan. You do not calculate any price yourself: the page behind the link does, line by line, and your user can adjust the plan there. Three orders of magnitude, machines included, Standard support included, provider prices as of 27 October 2026: - Small app (an API, a database, a cache): €164.37 per month on Hetzner. - Growing SaaS (production and staging, peaks ×2): €341.40 per month on Hetzner, up to €435.53 during peaks. - App with a GPU (an API and a model on L4): €696.03 per month on Scaleway. The same examples and the price grid, in JSON: https://www.fransys.cloud/tarifs.json ## 1. Understand the project If you have access to the repository, look at it first: `docker-compose.yml`, `Dockerfile`, `composer.json`, `package.json`, `requirements.txt`, `Gemfile`, `pom.xml`, the queues, the scheduled tasks, the database and the cache in use. Then ask your user, three questions at most at a time, only what is missing: - what is at stake if the application stops: demo or staging, internal tool or small production, production that brings in revenue; - the traffic: users or visits per day, and the peak; - the size of the database today and in a year; - the environments wanted (staging, production) and the constraints (GPU, data in Europe). If your user does not know, take the default values below and say which ones. ## 2. Describe the project The keys and the values in `code` below are read as they are: keep them in this form, whatever the language of the conversation. Only the names (`nom`) are free text. ```json { "nom": "Laravel SaaS", "hebergeur": "hetzner", "clusters": [ { "nom": "production", "criticite": "stable", "services": [ { "nom": "API", "type": "application", "vcpu": 1, "memoire_go": 2, "disque_go": 10, "replicas": 2, "replicas_max": 4 }, { "nom": "Database", "type": "postgresql", "vcpu": 1, "memoire_go": 2, "disque_go": 20 }, { "nom": "Cache", "type": "redis", "vcpu": 1, "memoire_go": 1 } ] }, { "nom": "staging", "criticite": "basic", "services": [ { "nom": "API", "type": "application" }, { "nom": "Database", "type": "postgresql", "disque_go": 10 } ] } ] } ``` - `type`: `application`, `worker`, `cron`, `postgresql`, `mysql`, `mariadb`, `redis`, `ia` (with `gpu`, `type_gpu`: L4, L40S or H100, and `heures_par_jour` if the model only runs during office hours). - `hebergeur` (provider): `hetzner`, or `scaleway` (required for a GPU). - `compte` (account): `fransys` by default; `client` if the machines will be on your user's own account with the provider. - `facture_actuelle` (at the root, optional): what your user pays today to host this project, in euros excluding VAT per month. If they give you their current bill (AWS, OVHcloud, Heroku…), carry the services it shows into the description and put its total here: the page displays the difference. - `criticite` (criticality): `basic` for a demo or staging; `stable` for an internal tool or a production; `mission_critical` for a production that must survive the failure of a machine (at least 2 instances per service). - Sizes per instance, to adjust: PHP, Node or Python application, 0.25 to 1 vCPU and 0.5 to 1 GB; Java, 1 vCPU and 2 GB; background jobs, 0.5 vCPU and 1 GB; database, 0.5 to 2 vCPU, memory equal to 25% of the hot data (1 GB at least), disk equal to the data in a year × 1.5; Redis, 0.25 to 1 vCPU, memory = cache size + 20%, disk (`disque_go`) = 2 × the memory by default, for persistence and backups. - Instances (`replicas`): one is enough for small traffic (10,000 visits per day is about 2 pages per second at the peak); `replicas_max` is the number at the peak. ## 3. Give the link The link is `https://www.fransys.cloud/en/plan#`, followed by the description encoded as by `encodeURIComponent(JSON.stringify(description))`, on a single line: https://www.fransys.cloud/en/plan# If you cannot encode, write the JSON as it is after the `#`, without any space. Present it as a Markdown link, on its own line, so that your user sees a short clickable text rather than the whole address: [See my costed infra plan](https://www.fransys.cloud/en/plan#) Do not write the address in plain text next to it: it is long, and the link text is enough. In the address, also replace `(` with `%28` and `)` with `%29` (`encodeURIComponent` leaves them), otherwise a parenthesis in a name breaks the link. Under the link, give the description in a code block (your user can paste it into the page if the link is cut), then your assumptions, one line each, and what would move the price the most. This is an estimate, not a quote: the page then offers to talk it over with us for 20 minutes. Version française : https://www.fransys.cloud/plan/llms.txt