GemeinderatsRadar is an Astro-powered web application designed to provide insights and structured information about local council agendas, documents, and consultations. The application fetches, organizes, and displays data from sources like the OParl standard, making it more accessible to interested citizens.
- Document Listings: View all published council papers with details such as title, reference number, date, and type.
- Consultations Details: Display the agenda, organization roles, and results for consultations tied to meetings.
- Search Functionality: Search through available data using the integrated
astro-pagefind
component. - Filter and Explore: Easily explore council documents or even jump to the specific reference details.
- Responsive Design: Optimized for an accessible experience across all device types.
The folder structure follows the Astro framework's best practices:
/
├── public/ # Public assets, available at the root URL
├── src/ # Source code
│ ├── components/ # Reusable UI components (Astro and TypeScript)
│ ├── layouts/ # Layout components for templates
│ ├── pages/ # Astro pages (e.g., index, detail pages)
│ ├── shared/ # Shared code such as types, stores, and utilities
│ └── styles/ # Global styles and shared CSS
└── package.json # Node.js package dependencies and scripts
- Astro Framework: Fast and modern web development framework.
- TypeScript: A statically typed superset of JavaScript to ensure type safety.
astro-pagefind
: Enables fast and feature-rich search on static Astro sites.- CSS: Modern and flexible styling for the UI components.
Run these commands in your terminal, from the root of the project:
Command | Description |
---|---|
npm install |
Install all project dependencies |
npm run dev |
Start a development server at localhost:4321 |
npm run build |
Build the project for production in the dist/ folder |
npm run preview |
Serve the built production output locally |
npm run format |
Automatically format the code with Prettier |
This project is ready to be deployed to any static hosting provider. The build output resides in the dist/
folder. Providers like Netlify, Vercel, and GitHub Pages are excellent choices.
To build for production:
npm run build
Then upload the contents of the dist
directory to your hosting provider.
The application fetches its data from external JSON resources that conform to the OParl standard. Below are the primary data sources loaded into the application:
- Organizations: Used for identifying organizational entities related to papers and consultations.
- Meetings: Includes details about schedules, participants, and locations.
- Papers: Refers to council documents displayed to users, each with metadata such as its type, date, title, etc.
astro.config.mjs
: Config file for Astro, integrating features likeastro-pagefind
.- Layouts: Contains basic markup and styling for consistent UI across pages.
- TypeScript Models: Define interfaces for structured data, such as
AgendaItem
,Meeting
, andOrganization
. - Stores: The stores (e.g.,
PapersStore
,MeetingsStore
) fetch and manage JSON data for application usage.
- Clone the repository.
git clone https://github.com/your-repo/karlsruhe-oparl-viewer.git
cd karlsruhe-oparl-viewer
- Install dependencies.
npm install
- Start the local development server.
npm run dev
Visit http://localhost:4321
in your web browser to access the app.
Search for council papers via the landing page or explore the list of all papers using the "Drucksachen" section. Click on an individual paper to drill down into its details.
Contributions are welcome! If you'd like to report a bug, suggest new features, or submit a pull request, please ensure you follow the steps below:
- Clone the repository.
- Create a feature branch.
- Commit your changes following conventional commit standards.
- Submit a pull request with a clear description of your changes.
Please ensure all code follows the formatting rules specified in .prettierrc.mjs
. Use npm run format
to automatically apply these rules.
This project is licensed under the MIT License. See the file for more information.
Enjoy building with GemeinderatsRadar! 🚀