Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/technologiestiftung/kulturdaten-website

Website for the project kulturdaten.berlin
https://github.com/technologiestiftung/kulturdaten-website

nextjs react typescript

Last synced: 30 days ago
JSON representation

Website for the project kulturdaten.berlin

Awesome Lists containing this project

README

        

# kulturdaten.berlin Website

[![](https://img.shields.io/badge/Built%20with%20%E2%9D%A4%EF%B8%8F-at%20Technologiestiftung%20Berlin-blue)](https://www.technologiestiftung-berlin.de/)

Website for the kulturdaten.berlin project. Built using TypeScript, Next.js, Emotion, Vitest and Storybook. It’s connected to the [kulturdaten.berlin API](https://github.com/technologiestiftung/kulturdaten-api).

## Installation

1. Install a node version that matches the version defined in `.nvmrc` (if you’re using [nvm](https://github.com/nvm-sh/nvm), run `nvm install` and/or `nvm use` to switch to that version).
2. Install dependencies:
```shell
npm install
```
3. Create a `.env` file and add all values (see `.env.example` for inspiration).
4. Generate the OpenAPI client:
```shell
npm run generate-api
```

## Local Development

Start a local development server at :

```shell
npm run dev
```

Most changes are reflected live without having to restart the server.

> [!NOTE]
> Make sure you have an instance of the [kulturdaten-api](https://github.com/technologiestiftung/kulturdaten-api) running locally. Alternatively, you can use a deployed API by adjusting `NEXT_PUBLIC_API_BASE_URL` in `.env`.

## (Production) Build

Compile the application:

```shell
npm run build
```

Start the application in production mode (after building):

```shell
npm run start
```

More information about these commands:

## More commands

```shell
# Re-generate OpenAPI client based on the YML file in src/api/
npm run generate-api

# Format all code with Prettier
npm run format

# Lint all code with ESLint
npm run lint

# Run the TypeScript compiler to find any TypeScript errors
npm run typecheck

# Run all tests with Vitest (incl. hot reload when run locally)
npm test

# Run a local Storybook instance
npm run storybook
```

## Internationalization

Internationalization (i18n) is implemented via [next-intl](https://next-intl-docs.vercel.app/) and Next.js’ [i18n routing](https://nextjs.org/docs/pages/building-your-application/routing/internationalization).

- The supported languages are German (`de`) and English (`en`). The message strings are stored in `/i18n/de.json` and `/i18n/en.json`, respectively.
- Messages are grouped with [namespaces](https://next-intl-docs.vercel.app/docs/usage/messages#structuring-messages) (ideally, we’ll end up with ~1 namespace per page).
- TypeScript integration is implemented within `global.d.ts`, which only uses the German translations (`/i18n/de.json`) to build the types.
- New pages should have a `getStaticProps` function that returns the `messages` prop (see [docs](https://next-intl-docs.vercel.app/docs/getting-started/pages-router)).

## Contributing

Before you create a pull request, please write an issue so we can discuss your changes.

## Contributors ✨

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):



Sebastian Herrmann
Sebastian Herrmann

💻 🤔 👀 ️️️️♿️ ⚠️ 🚇
Urs Schmidt
Urs Schmidt

💻 🤔 ⚠️ 👀
Thorsten Diekhof
Thorsten Diekhof

🤔 👀 🚇
Simon Scholler
Simon Scholler

🤔 👀 🎨 🖋

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!

## Content Licensing

Text and content available as [CC BY](https://creativecommons.org/licenses/by/3.0/de/).

## Credits



Made by









Supported by