Official website for alma – the modern, web-based solution for managing polluted sites (Kataster belasteter Standorte).
- Node.js 20 or higher
- pnpm
pnpm installnpm run devOpen http://localhost:4321 in your browser.
npm run build/
├── public/ # Static assets (favicon, images, etc.)
├── src/
│ ├── components/ # Reusable Astro components
│ │ ├── graphics/ # Vector graphics used in components
│ │ ├── icons/ # Vector icons used in components
│ │ ├── images/ # Raster images used in components
│ │ └── Button.astro
│ ├── fonts/ # Local font files (Satoshi)
│ ├── pages/ # Page routes
│ │ ├── [locale].astro # Localized version
│ │ └── index.astro # Default page (redirects to browser or default locale)
│ ├── lib.ts # Utility functions (i18n, etc.)
│ ├── tailwind.css # Tailwind CSS configuration
│ └── translations.json # All translatable content
└── package.json
The website supports three languages: German (de), French (fr), and Italian (it).
All translatable content is stored in src/translations.json using a flat structure with dot notation:
{
"de": {
"navigation.about": "Über alma",
"header.heading": "Einfach. Sicher. Gemeinsam entwickelt."
}
}---
import { useTranslations } from "../lib.ts";
const t = useTranslations(Astro.currentLocale);
---
<h1>{t("header.heading")}</h1>Keys follow a hierarchical naming pattern:
navigation.*- Navigation itemsheader.*- Header section contentabout.*- About section contentfeature.*- Feature section contentfeature.data.*- Data management featurefeature.geodata.*- Geodata featurefeature.workflow.*- Workflow featurefeature.export.*- Export feature
All website content can be edited in a single file: src/translations.json
- Open
src/translations.json - Find the key you want to edit (e.g.,
"header.heading") - Update the text for each language (
de,fr,it) - Save the file
Some content includes HTML tags for formatting:
"header.description": "alma unterstützt Behörden bei <strong>der Führung des Katasters</strong>"
"feature.data.list": "<li><strong>Item 1</strong></li><li>Item 2</li>"<strong>- Bold text<li>- List items<br />- Line break
- Add a new key in
src/translations.jsonfor all three languages - Use the key in your Astro component with
t("your.new.key")
The project uses Tailwind CSS v4 with custom configuration:
- Custom colors defined in
src/tailwind.css - Satoshi font family (locally hosted)
@theme {
--color-gray-1: #d9d9d9;
/* Add more custom colors here */
}- Framework: Astro 5 - Static site generator
- Styling: Tailwind CSS v4 - Utility-first CSS
- Fonts: Satoshi (locally hosted)
- Package Manager: pnpm
- Formatting: Prettier with Astro and Tailwind plugins
- Create a new branch from
main - Make your changes
- Run
pnpm formatto format code - Test locally with
pnpm dev - Create a pull request
- Use Prettier for formatting (run
pnpm format) - Follow existing component patterns
- Use TypeScript for type safety
- Keep components small and reusable
[Add license information here]