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-500: #d0d5dd;
/* 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]