Getting Started
Create .env.local file
Before starting make sure .env.local file exists and contains
# Only needed if using keycloak
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET= # you can generate it using "openssl rand -base64 32"
# If you plan to use keycloak (only openid issuer implemented) you have to create a client on your app
KEYCLOAK_CLIENT_ID=...
KEYCLOAK_CLIENT_SECRET=...
KEYCLOAK_ISSUER=https://<KEYCLOAK_DOMAIN>/realms/<REALM_NAME>
Launch development server
First, run the development server:
npm ci
npm run dev
Or use another package manager
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
Add features
Add page
Create src/app/[locale]/{your-page}/page.tsx
Or src/app/{your-page}/page.tsx if you don't want to use locales
Add your code and there you go !
Add API endpoint
Create src/app/api/your/endpoints/route.ts or src/app/api/your-endpoints/route.ts
Add Locale
Copy messages/en.json and rename it messages/{your-locale}.json, then translate it.
Add locale flag at svg format in public/flags
Update src/i18n/routing.ts with your new locale
Protect a Page route or an API route
Add your Page or API in src/proxy.ts
'/example': ['admin'], # Page only accessible to users with admin role
'/dashboard': [], # Page accessible to all users connected
Git
Before Commit
Setup
If you use this template by using git clone, remove .git and link directory to a repo
Then run
git init
git remote add origin https://gitea.iceberg.black/user/repo.git
git branch -M main
git push -u origin main
Lint and format
Install Husky to link and format code before commit
npx husky init
Copy
npx lint-staged
Or whatever you want in .husky/pre-commit
Project related informations
Change all lines with [TO CHANGE] + public/manifest.json
Before Push
- Ensure all git secrets or variables exist
- Ensure all docker links exist on distant machine
- Ensure env file exists on remote machine
Auto deploy
To run auto deploy you have to check for the "Before Push" section and then:
Push Tag with format v* to trigger Deploy CI
git tag -a vX.X.X -m "Release vX.X.X" # Locally
git push origin vX.X.X # On remote
Optionnal Delete tag:
git tag -d vX.X.X # Locally
git push origin :refs/tags/vX.X.X # On remote
Useful command with all to reset
git tag -d v1.0.0; git push origin :refs/tags/v1.0.0; git tag -a v1.0.0 -m "Release v1.0.0"; git push origin v1.0.0
Features
Implemented
- Clean gitea CI
- Locale handling
- Authentification with keycloak
- Routes an API role protections
- Auto deploy
To implement
- Token refresh