{"id":41480346,"url":"https://github.com/van-sprundel/partijgedrag","last_synced_at":"2026-01-23T17:17:29.789Z","repository":{"id":315910542,"uuid":"1015587582","full_name":"van-sprundel/partijgedrag","owner":"van-sprundel","description":"Partijgedrag 2.0","archived":false,"fork":false,"pushed_at":"2026-01-19T18:20:53.000Z","size":25893,"stargazers_count":7,"open_issues_count":15,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-20T00:46:20.392Z","etag":null,"topics":["politics","voting"],"latest_commit_sha":null,"homepage":"https://partijgedrag.nl","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/van-sprundel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-07T18:19:49.000Z","updated_at":"2026-01-19T18:20:56.000Z","dependencies_parsed_at":"2025-09-21T16:09:07.688Z","dependency_job_id":"4da0b8e8-feb3-4344-909f-e0b36a846104","html_url":"https://github.com/van-sprundel/partijgedrag","commit_stats":null,"previous_names":["van-sprundel/partijgedrag"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/van-sprundel/partijgedrag","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/van-sprundel%2Fpartijgedrag","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/van-sprundel%2Fpartijgedrag/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/van-sprundel%2Fpartijgedrag/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/van-sprundel%2Fpartijgedrag/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/van-sprundel","download_url":"https://codeload.github.com/van-sprundel/partijgedrag/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/van-sprundel%2Fpartijgedrag/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28696523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T15:57:05.722Z","status":"ssl_error","status_checked_at":"2026-01-23T15:56:27.656Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["politics","voting"],"created_at":"2026-01-23T17:17:29.166Z","updated_at":"2026-01-23T17:17:29.781Z","avatar_url":"https://github.com/van-sprundel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Partijgedrag\n\nPartijgedrag is a web application that provides insight into the voting behavior of political parties in the Dutch parliament. It was originally created by Elwin Oost and later rebuilt in TypeScript.\n\n## Project Structure\n\nThis repository is a monorepo containing three main components:\n\n- `app/`: The web application, split into a frontend and a backend.\n  - `frontend/`: A React/TypeScript frontend built with Vite.\n  - `backend/`: A Node.js/TypeScript backend using Express, node-pg and SafeQL.\n- `etl/`: A Go application responsible for extracting, transforming, and loading the voting data into the database.\n- `docker-compose.yml`: Defines the services for the application, which for now is only the PostgreSQL database.\n\n## Screenshots\n\n\u003cdetails\u003e\n\n\u003cimg width=\"2560\" height=\"1330\" alt=\"image\" src=\"https://github.com/user-attachments/assets/acd42a7a-7705-47e3-9b50-2918aeabb3d1\" /\u003e\n\u003cimg width=\"2545\" height=\"1330\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bc2f1df7-dbe0-41a8-b8c1-5f784fe1aa66\" /\u003e\n\u003cimg width=\"2560\" height=\"1330\" alt=\"image\" src=\"https://github.com/user-attachments/assets/360702fd-eaed-4c7e-aed9-51e78e547e19\" /\u003e\n\u003cimg width=\"2545\" height=\"1330\" alt=\"image\" src=\"https://github.com/user-attachments/assets/85a47ef2-f668-4652-ae36-e11560bda8af\" /\u003e\n\u003c/details\u003e\n\n## Development Setup\n\n### Prerequisites\n\n- [Docker](https://www.docker.com/) and Docker Compose\n- [Go](https://go.dev/) (version 1.21 or higher)\n- [Node.js](https://nodejs.org/) (version 18 or higher)\n\n### 1. Start the Database\n\nThe application requires a PostgreSQL database. You can start one using Docker Compose:\n\n```bash\ndocker compose up -d\n```\n\nor Podman\n\n```bash\npodman compose up -d\n```\n\nThis will start a PostgreSQL server and expose it on port 5432.\n\n### 2. Load the Data (ETL)\n\nThe `etl` service fetches and processes parliamentary data.\n\n1.  Navigate to the ETL directory:\n    ```bash\n    cd etl\n    ```\n2.  On the first run, seed the database:\n    ```bash\n    go run cmd/manage_categories/main.go --action=seed\n    ```\n3.  Run the ETL process:\n    ```bash\n    go run cmd/etl/main.go\n    ```\n\n### 3. Run the Application\n\nThe `app` is split into a backend and a frontend, which are separately for development.\n\n### App\n\n1.  Navigate to the app directory:\n    ```bash\n    cd app\n    ```\n2.  Install dependencies:\n    ```bash\n    npm install\n    ```\n3.  Set up your environment variables:\n    ```bash\n    cd backend; cp .env.example .env; cd ../frontend; cp .env.example .env; cd ..\n    ```\n\n\u003e Ensure the `DATABASE_URL` in the new `.env` file is correctly configured for your environment.\n\n4.  Start the app server:\n\n    ```bash\n    cd -; npm run dev\n    ```\n\n    The backend will be running on `http://localhost:3001`.\n\n    The frontend will be accessible at `http://localhost:3000`.\n\n## Acknowledgements\n\nThis project uses open data provided by the Tweede Kamer der Staten-Generaal (Dutch House of Representatives). For more information about the data sources and API documentation, visit https://opendata.tweedekamer.nl.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvan-sprundel%2Fpartijgedrag","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvan-sprundel%2Fpartijgedrag","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvan-sprundel%2Fpartijgedrag/lists"}