Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/technologiestiftung/kulturdaten-website
- Owner: technologiestiftung
- License: mit
- Created: 2023-07-05T14:13:10.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-17T14:43:46.000Z (8 months ago)
- Last Synced: 2024-04-17T15:38:38.932Z (8 months ago)
- Topics: nextjs, react, typescript
- Language: TypeScript
- Homepage: https://www.kulturdaten.berlin
- Size: 4.87 MB
- Stars: 1
- Watchers: 5
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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
💻 🤔 👀 ️️️️♿️ ⚠️ 🚇
Urs Schmidt
💻 🤔 ⚠️ 👀
Thorsten Diekhof
🤔 👀 🚇
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