Note: Czech version is available below / Česká verze je k dispozici níže
A template for developing applications for the Tour de App competition with a frontend in Vanilla JavaScript and a backend in Express.
In the backend directory, there is a .env.example file that needs to be renamed to .env and the values adjusted as needed.
Warning
If you want to change the database password, you need to change it in the tourdeapp.yaml file, apps/server/.env, and for local development in the apps/server/package.json file.
For local development, you need to run three services: the database, backend, and frontend. Below you'll find detailed step-by-step instructions.
First, you need to set up environment variables:
- Backend: In the
apps/serverdirectory, rename the.env.examplefile to.env:cd apps/server cp .env.example .env
Install dependencies for both parts of the application:
-
Backend dependencies:
cd apps/server npm install -
Frontend dependencies:
cd ../web npm install
Start the database using a Docker container:
cd apps/server
npm run dbThe database will run on port 3306. Wait a few seconds for the database to fully initialize (usually 10-20 seconds).
Warning
The database is not persistent, data will be lost after shutting down the Docker container.
Tip
If you need to stop the database, use docker ps to view running containers and docker stop <container-id> to stop the database container.
In a new terminal, start the backend:
cd apps/server
npm run devThe backend will run on http://localhost:3000. You should see a message that the server is running and connected to the database.
In another terminal, start the frontend:
cd apps/web
npm run devThe frontend will run on http://localhost:3001. Open this address in your browser.
- Frontend: Open http://localhost:3001 - your application should be displayed
- Backend API: Open http://localhost:3000/api - you should see a response from the API
- Database: You can connect using a MySQL client to
localhost:3306with usernamerootand passwordpassword
- Port already in use: If any of the ports (3000, 3001, 3306) are already in use, terminate the process using it or change the port in the configuration files
- Database won't start: Check that you have Docker installed and running
- Backend can't connect to database: Wait for the database to fully initialize (usually takes 10-20 seconds after starting)
- Node.js is not installed: Install Node.js from nodejs.org or use a version manager like
nvm(Linux/MacOS:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash, Windows: download from nvm-windows)
How the application runs on tourde.cloud is defined in the tourdeapp.yaml file in the root directory of this repository. This boilerplate includes pre-configured services:
- caddy (reverse proxy for frontend and backend) - handles routing requests to your application to the correct place (i.e., /* to frontend and /api/* to backend)
- web (frontend application)
- server (backend application)
- mysql (MySQL database)
Warning
The database is not persistent, data will be lost after uploading a new version of the application.
Note
The reverse proxy is set by default so that requests to /* go to the frontend and /api/* to the backend. If you want to have the API on different addresses, you need to change the Caddyfile file in the apps/caddy directory.
What tourdeapp.yaml can contain is described in How to deploy an app to Tour de Cloud.
Applications are uploaded to Tour de Cloud via GitHub action. For uploading, you need to set TDC_TOKEN:
- Settings -> (Security) Secrets and variables -> Actions -> New repository secret.
- Name:
TDC_TOKENSecret: [your secret generated in tourde.cloud]
- Installed WSL2 (Windows Subsystem for Linux)
- Installed and running Docker
- Installed Node.js
- Installed npm (usually included with Node.js)
How to submit your application can be found in our How to deploy an app to Tour de Cloud
Česká verze / Czech Version
Šablona pro vývoj aplikace v soutěži Tour de App společně s frontendovou částí ve Vanilla JavaScript a backendovou částí v Express.
V složce pro backend je .env.example soubor, který je potřeba přejmenovat na .env a upravit hodnoty dle potřeby.
Warning
Pokud chcete měnit heslo od databáze, je potřeba ho změnit v souboru tourdeapp.yaml, apps/server/.env a pro lokální vývoj v souboru apps/server/package.json.
Pro lokální vývoj je potřeba spustit tři služby: databázi, backend a frontend. Níže najdete podrobné instrukce krok za krokem.
Nejprve je potřeba nastavit environmentální proměnné:
- Backend: V adresáři
apps/serverpřejmenujte soubor.env.examplena.env:cd apps/server cp .env.example .env
Nainstalujte závislosti pro obě části aplikace:
-
Backend závislosti:
cd apps/server npm install -
Frontend závislosti:
cd ../web npm install
Databázi spustíte pomocí Docker kontejneru:
cd apps/server
npm run dbDatabáze poběží na portu 3306. Počkejte několik sekund, než se databáze plně inicializuje (obvykle 10-20 sekund).
Warning
Databáze není perzistentní, data se z ní po vypnutí Docker kontejneru ztratí.
Tip
Pokud potřebujete databázi zastavit, použijte příkaz docker ps pro zobrazení běžících kontejnerů a docker stop <container-id> pro zastavení kontejneru s databází.
V novém terminálu spusťte backend:
cd apps/server
npm run devBackend poběží na http://localhost:3000. Měli byste vidět zprávu, že server běží a je připojen k databázi.
V dalším terminálu spusťte frontend:
cd apps/web
npm run devFrontend poběží na http://localhost:3001. Otevřete tuto adresu v prohlížeči.
- Frontend: Otevřete http://localhost:3001 - měla by se zobrazit vaše aplikace
- Backend API: Otevřete http://localhost:3000/api - měli byste vidět odpověď z API
- Databáze: Můžete se připojit pomocí MySQL klienta na
localhost:3306s uživatelským jménemroota heslempassword
- Port již používán: Pokud některý z portů (3000, 3001, 3306) je již používán, ukončete proces, který ho používá, nebo změňte port v konfiguračních souborech
- Databáze se nespustí: Zkontrolujte, zda máte nainstalovaný a spuštěný Docker
- Backend se nemůže připojit k databázi: Počkejte, až se databáze plně inicializuje (obvykle trvá 10-20 sekund po spuštění)
- Node.js není nainstalován: Nainstalujte Node.js z nodejs.org nebo použijte správce verzí jako
nvm(Linux/MacOS:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash, Windows: stáhněte z nvm-windows)
Jak se aplikace spustí na tourde.cloud je definováno v souboru tourdeapp.yaml v kořenovém adresáři tohoto repozitáře. V tomto boilerplate jsou předpřipravené služby:
- caddy (reverse proxy pro frontend a backend) - stará se o to, aby dotazy na Vaší aplikaci byly směrovány na správné místo (tj. /* na frontend a /api/* na backend)
- web (frontend aplikace)
- server (backend aplikace)
- mysql (MySQL databáze)
Warning
Databáze není perzistentní, data se z ní po nahrání nové verze aplikace ztratí.
Note
Reverse proxy je defaultně nastaven tak, že dotazy na /* jdou na frontend a /api/* na backend. Pokud byste chtěli API mít na jiných adresách, je nutné změnit soubor Caddyfile v adresáři apps/caddy.
Co může tourdeapp.yaml obsahovat je napsáno v Jak nasadit aplikaci na Tour de Cloud.
Do Tour de Cloud se aplikace nahrávají přes GitHub action. Pro nahrání je potřeba zadat TDC_TOKEN:
- Settings -> (Security) Secrets and variables -> Actions -> New repository secret.
- Name:
TDC_TOKENSecret: [váš secret vygenerovaný v tourde.cloud]
- Nainstalovaný WSL2 (Windows Subsystem for Linux)
- Nainstalovaný a běžící Docker
- Nainstalovaný Node.js
- Nainstalovaný npm (bývá součástí Node.js)
Jak odevzdat svoji aplikaci můžete najít v našich Jak nasadit aplikaci na Tour de Cloud