{"id":51098895,"url":"https://github.com/iMartzen/vogel-spotter","last_synced_at":"2026-07-12T14:01:01.980Z","repository":{"id":270110043,"uuid":"909364850","full_name":"iMartzen/vogel-spotter","owner":"iMartzen","description":"vogel-spotter is een webapplicatie die recente vogelwaarnemingen weergeeft vanuit een BirdWeather-station. De applicatie bestaat uit een FastAPI-backend en een frontend die wordt geserveerd door Nginx.","archived":false,"fork":false,"pushed_at":"2025-02-03T20:03:01.000Z","size":114,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T11:14:18.102Z","etag":null,"topics":["ansible","birdnet","birdnet-pi","birds","birdweather","docker","docker-compose","fastapi","html","javascript","simple-project","vercel","vercel-deployment"],"latest_commit_sha":null,"homepage":"https://tuin.uitvogelpassie.nl","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iMartzen.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}},"created_at":"2024-12-28T13:37:33.000Z","updated_at":"2025-01-25T13:06:49.000Z","dependencies_parsed_at":"2025-01-12T19:31:16.983Z","dependency_job_id":"b241f639-a5dd-4c6f-9400-34dde4e91daa","html_url":"https://github.com/iMartzen/vogel-spotter","commit_stats":null,"previous_names":["imartzen/vogel-spotter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/iMartzen/vogel-spotter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iMartzen%2Fvogel-spotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iMartzen%2Fvogel-spotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iMartzen%2Fvogel-spotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iMartzen%2Fvogel-spotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iMartzen","download_url":"https://codeload.github.com/iMartzen/vogel-spotter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iMartzen%2Fvogel-spotter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35393398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-12T02:00:06.386Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["ansible","birdnet","birdnet-pi","birds","birdweather","docker","docker-compose","fastapi","html","javascript","simple-project","vercel","vercel-deployment"],"created_at":"2026-06-24T09:00:33.658Z","updated_at":"2026-07-12T14:01:01.974Z","avatar_url":"https://github.com/iMartzen.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# 🦜 vogel-spotter\n\n❗ Click here for [🇬🇧 English](#-english)\n\n**vogel-spotter** is een webapplicatie die recente vogelwaarnemingen weergeeft vanuit een BirdWeather-station. De applicatie bestaat uit een **FastAPI-backend** en een frontend die wordt geserveerd door **Nginx**.\n\n## 📑 Inhoudsopgave\n\n- [🪺 Doel](#-doel)\n- [🐤 Functies](#-functies)\n- [🐦‍⬛ Vereisten](#-vereisten)\n- [🐣 Installatie](#-installatie)\n  - [▲ Vercel](#-vercel)\n  - [💻 Lokaal](#-lokaal)\n  - [🌐 Server](#-server)\n  - [🪹 Voorbeeld .env bestand](#-voorbeeld-env-bestand)\n- [🦆 Projectstructuur](#-projectstructuur)\n- [🐓 Frontend](#-frontend)\n- [🦉 Backend](#-backend)\n  - [🦢 API Endpoints](#-api-endpoints)\n- [🔒 HTTPS-Portal](#-https-portal)\n- [🕊️ Inspiratie](#%EF%B8%8F-inspiratie)\n- [🐦 Licentie](#-licentie)\n- [🐦‍🔥 To Do](#-to-do)\n- [🇬🇧 English](#-english)\n\n## 🪺 Doel\n\nHet doel is om vogelliefhebbers een eenvoudig platform te bieden om vogelactiviteit van een BirdWeather-station te volgen.\n\n## 🐤 Functies\n\n- Weergave van recente vogelwaarnemingen van het afgelopen uur.\n- Weergave van top 25 meest waargenomen vogelsoorten op dit BirdWeather-station.\n- Responsief ontwerp geschikt voor verschillende schermformaten.\n- Ondersteuning voor dark mode voor gebruik in omgevingen met weinig licht.\n- Bevat een refresh-knop voor snelle updates.\n- Ondersteuning voor zowel Engels als Nederlands.\n\n## 🐦‍⬛ Vereisten\n\n- **Docker**: Zorg dat Docker op je systeem is geïnstalleerd.\n- **Docker Compose**: Vereist om meerdere containers tegelijk te beheren.\n\n## 🐣 Installatie\n\n### ▲ Vercel\n\nHet is mogelijk om de applicatie te implementeren op [Vercel](https://vercel.com/home). Vercel is een platform voor frontend-hosting en serverloze functies. Klik op de onderstaande knop om de implementatie te starten:\n\n[![Deploy to Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/iMartzen/vogel-spotter)\n\nVergeet niet om de omgevingsvariabele toe te voegen aan de setup. Raadpleeg de [Vercel documentatie](https://vercel.com/docs/projects/environment-variables) voor meer informatie.\n\n### 💻 Lokaal\n\n1. **Clone de repository**:\n\n    ```bash\n    git clone https://github.com/iMartzen/vogel-spotter.git\n    cd vogel-spotter\n    ```\n\n2. **Start de applicatie en volg de instructies**:\n\n    ```bash\n    ./run.sh\n    ```\n\n    *Als het script geen uitvoerrechten heeft:* `chmod +x run.sh`\n\n3. **Open je browser** en ga naar:\n\n    ```bash\n    https://$HOSTNAME.local\n    ```\n\n4. **Stop de applicatie**\n\n    ```bash\n    ./stop.sh\n    ```\n\n    *Als het script geen uitvoerrechten heeft:* `chmod +x stop.sh`\n\n### 🌐 Server\n\nGebruik het [Ansible-playbook](/ansible/playbook.yml) om de applicatie te implementeren op een server. Raadpleeg de [README.md](/ansible/README.md) voor vereisten en installatie-instructies.\n\n### 🪹 Voorbeeld `.env` bestand\n\n```bash\nSTATION_ID=1\n```\n\n## 🦆 Projectstructuur\n\n- **`src/`**: Bevat de broncode van de FastAPI-backend en de frontend.\n- **`ansible/`**: Bevat de code voor het Ansible playbook\n- **`docker-compose.yml`**: Docker Compose-configuratiebestand.\n- **`Dockerfile`**: Dockerfile voor het bouwen van de FastAPI-backend.\n\n## 🐓 Frontend\n\nDe frontend is een **single-page applicatie (SPA)** gebouwd met vanilla JavaScript. De frontend haalt gegevens op via de API en toont deze dynamisch in de interface.\n\n## 🦉 Backend\n\nDe backend is gebouwd met **FastAPI** en biedt de API-endpoints. Deze backend haalt gegevens op van de BirdWeather-API, verwerkt deze en levert ze aan de frontend.\n\n### 🦢 API Endpoints\n\n- **`/api/detections`**: Geeft recente vogelwaarnemingen van het afgelopen uur terug.\n- **`/api/top25`**: Retourneert de top 25 van meest waargenomen vogelsoorten op dit BirdWeather-station.\n\n## 🔒 HTTPS-Portal\n\nDe setup maakt gebruik van [https-portal](https://github.com/SteveLTN/https-portal) in de Docker Compose-setup. HTTPS-Portal is een volledig geautomatiseerde HTTPS-server, aangedreven door Nginx, Let's Encrypt en Docker. Het vereenvoudigt het verkrijgen en vernieuwen van SSL-certificaten voor je applicatie.\n\n## 🕊️ Inspiratie\n\nDit project is geïnspireerd door het [luistervink.nl](https://www.luistervink.nl) project, dat zich richt op het monitoren en analyseren van vogelgeluiden. vogel-spotter bouwt voort op dat idee door waarnemingen van BirdWeather-stations te integreren in een gebruiksvriendelijke webapplicatie.\n\n## 🐦 Licentie\n\nDit project is gelicentieerd onder de **MIT-licentie**. Zie het bestand [LICENSE](LICENSE) voor meer details.\n\n## 🐦‍🔥 To Do\n\n### Mogelijke uitbreidingen\n\n- **Dagelijkse top 10**: Voeg een lijst toe met de 10 meest waargenomen vogels van vandaag.\n- **Maandelijkse statistieken**: Toon het aantal waarnemingen per vogelsoort gedurende een maand.\n\n---\n\n## 🇬🇧 English\n\n**vogel-spotter** is a web application that displays recent bird sightings from a BirdWeather station. The application consists of a **FastAPI backend** and a frontend served by **Nginx**.\n\n## 📑 Table of Contents\n\n- [🪺 Purpose](#-purpose)\n- [🐤 Features](#-features)\n- [🐦‍⬛ Requirements](#-requirements)\n- [🐣 Installation](#-installation)\n  - [▲ Vercel](#-vercel)\n  - [💻 Locally](#-locally)\n  - [🌐 Server](#-server)\n  - [🪹 Example .env file](#-example-env-file)\n- [🦆 Project Structure](#-project-structure)\n- [🦚 Frontend](#-frontend)\n- [🦢 Backend](#-backend)\n  - [🐓 API Endpoints](#-api-endpoints)\n- [🔒 HTTPS-Portal](#-https-portal-1)\n- [🕊️ Inspiration](#%EF%B8%8F-inspiration)\n- [🐦 License](#-license)\n- [🦤 To Do](#-to-do)\n\n## 🪺 Purpose\n\nThe goal is to provide bird enthusiasts with a simple platform to track bird activity from a BirdWeather station.\n\n## 🐤 Features\n\n- Display recent bird sightings from the past hour.\n- Display of the top 25 most observed bird species at this BirdWeather station.\n- Responsive design suitable for various screen sizes.\n- Support for dark mode for use in low-light environments.\n- Includes a refresh button for quick updates.\n- Support for both English and Dutch.\n\n## 🐦‍⬛ Requirements\n\n- **Docker**: Ensure Docker is installed on your system.\n- **Docker Compose**: Required to manage multiple containers simultaneously.\n\n## 🐣 Installation\n\n### ▲ Vercel\n\nIt is also possible to deploy the application on [Vercel](https://vercel.com/home). Vercel is a platform for frontend hosting and serverless functions. Click the button below to start the deployment:\n\n[![Deploy to Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/iMartzen/vogel-spotter)\n\nDon't forget to add the environment variable to the setup. Refer to the [Vercel documentation](https://vercel.com/docs/projects/environment-variables) for more information.\n\n### 💻 Locally\n\n1. **Clone the repository**:\n\n    ```bash\n    git clone https://github.com/iMartzen/vogel-spotter.git\n    cd vogel-spotter\n    ```\n\n2. **Run the application and follow the instructions**:\n\n    ```bash\n    ./run.sh\n    ```\n\n    *If the script does not have execution permissions:* `chmod +x run.sh`\n\n3. **Open your browser** and navigate to:\n\n    ```bash\n    https://$HOSTNAME.local\n    ```\n\n4. **Stop the application**\n\n    ```bash\n    ./stop.sh\n    ```\n\n    *If the script does not have execution permissions:* `chmod +x stop.sh`\n\n### 🌐 Server\n\nUse the [Ansible-playbook](/ansible/playbook.yml) to deploy the application on a server. Refer to the [README.md](/ansible/README.md) for requirements and detailed installation instructions.\n\n### 🪹 Example `.env` file\n\n```bash\nSTATION_ID=1\n```\n\n## 🦆 Project Structure\n\n- **`src/`**: Contains the source code for the FastAPI backend and the frontend.\n- **`ansible/`**: Containts the code for the Ansible playbook\n- **`docker-compose.yml`**: Docker Compose configuration file.\n- **`Dockerfile`**: Dockerfile for building the FastAPI backend.\n\n## 🦚 Frontend\n\nThe frontend is a **single-page application (SPA)** built with vanilla JavaScript. The frontend fetches data via the API and dynamically displays it in the interface.\n\n## 🦢 Backend\n\nThe backend is built with **FastAPI** and provides the API endpoints. This backend fetches data from the BirdWeather API, processes it, and delivers it to the frontend.\n\n### 🐓 API Endpoints\n\n- **`/api/detections`**: Returns recent bird sightings from the past hour.\n- **`/api/top25`**: Returns the top 25 most observed bird species at this BirdWeather station.\n\n## 🔒 HTTPS-Portal\n\nThe setup uses [https-portal](https://github.com/SteveLTN/https-portal) in the Docker Compose setup. HTTPS-Portal is a fully automated HTTPS server powered by Nginx, Let's Encrypt, and Docker. It simplifies the process of obtaining and renewing SSL certificates for your application.\n\n## 🕊️ Inspiration\n\nThis project is inspired by the [luistervink.nl](https://www.luistervink.nl) project, which focuses on monitoring and analyzing bird sounds. vogel-spotter builds on that idea by integrating observations from BirdWeather stations into a user-friendly web application.\n\n## 🐦 License\n\nThis project is licensed under the **MIT license**. See the [LICENSE](LICENSE) file for more details.\n\n## 🦤 To Do\n\n### Possible Extensions\n\n- **Daily Top 10**: Add a list of the 10 most observed birds of today.\n- **Monthly Statistics**: Show the number of observations per bird species over a month.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FiMartzen%2Fvogel-spotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FiMartzen%2Fvogel-spotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FiMartzen%2Fvogel-spotter/lists"}