A work in progress. Open to feedback, critique, and improvement.
Astronomical observations from Tlemcen, Algeria — in real time, open to all. Observations astronomiques depuis Tlemcen, Algérie — en temps réel, ouvertes à tous.
🌐 Live site: https://astroscan.space 📐 Methodology: https://astroscan.space/methodology 🛰️ Mission Control: https://astroscan.space/mission-control
ASTRO-SCAN is a small contribution to open astronomy, built and maintained from Tlemcen, Algeria.
The platform aggregates real-time astronomical data from public scientific sources and presents it through a unified web interface. It is offered as is — to be tested, challenged, and improved by anyone who finds it useful.
This is not an institutional observatory. It is an independent effort to make astronomical observation accessible from North Africa, using established open-source tools and public data feeds.
| Module | Description | Data source |
|---|---|---|
| ISS & satellites | Live positions of the International Space Station and tracked satellites | NORAD / CelesTrak TLE + Skyfield SGP4 |
| Space weather | Solar wind, Kp index, geomagnetic activity | NOAA SWPC |
| Tonight's sky | Planet visibility and ISS passes for Tlemcen | Astropy ephemerides |
| Daily astronomy | NASA Astronomy Picture of the Day | NASA APOD API |
| Open data portal | Raw scientific datasets for research and education | All sources above |
- Backend: Python 3.10+, Flask (Blueprint architecture)
- Orbital computation: Skyfield (SGP4 propagator)
- Ephemerides: Astropy
- TLE source: CelesTrak (NORAD)
- Space weather: NOAA SWPC
- Daily images: NASA APOD
- Frontend: Vanilla HTML/CSS/JS (no framework dependency)
- Database: SQLite (lightweight DBs for archives, sessions, alerts)
- Deployment: Gunicorn + Nginx on Ubuntu VPS
- Domain: astroscan.space
Continuous Lighthouse audits across all 50 modules (May 2026, v2.8.0):
| Metric | Score | Note |
|---|---|---|
| Modules PERFECT 100/100/100/100 (stable, 5/5 audits) | 21 / 50 (42%) | Always at 100 in every audit |
| Modules ≥3/5 audits PERFECT (reliable) | 26 / 50 (52%) | Pass 100 in majority of audits |
| Best-of-3 peak measurement | 29 / 50 (58%) | Maximum observed in best run |
| Accessibility ≥ 100/100 | 46 / 50 (92%) | WCAG 2.1 AA compliance |
| SEO ≥ 100/100 | 50 / 50 (100%) | All modules indexed correctly |
Transformation: from 1 module PERFECT (1.9%) baseline (May 16, 2026) to 21 stable + 29 peak (58%) in 20 chirurgical sprints over 55 hours.
Methodology: Lighthouse CLI (headless Chrome), single-run + best-of-N consolidation against variance, scripts in audit/.
Known structural limits (documented, not reducible without backend rewrite):
mission_control,orbital_map— Cesium WebGL errors in headless Chrome (BP=96)lab— SQLite 503 race conditions on/lab/raw/<image>(BP=96)europe_live— YouTube embed same-site cookies (BP=96)
Full tag with detailed bilan: v2.8.0-lighthouse-58pct-ui-clean
Active development. Current state can be summarized as:
- ✅ Live in production since April 2026
- ✅ Real-time data feeds from public scientific sources (NORAD, NOAA, NASA)
- ✅ Bilingual interface (English / French)
- ✅ Open data portal at /data
- ✅ Methodology page live at /methodology
- ✅ Mission Control orbital surveillance module at /mission-control
- ✅ Lighthouse audit v2.8.0 — 21 modules at 100/100/100/100 stable (May 2026)
- ⏳ Architecture migration in progress (monolith → Flask Blueprints, Phase 2C)
- ⏳ International scientific outreach (ESA, NASA, IAU, UNAWE) — in preparation
# Clone the repo
git clone https://github.com/za1974ria/astroscan.git
cd astroscan
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Set environment variables (see .env.example)
cp .env.example .env
# Run the development server
python station_web.pyThe application will be available at http://127.0.0.1:5003.
Current priorities (open to suggestions):
- Methodology page documenting computational methods and data sources
- Improved English-language documentation
- Performance optimization for low-bandwidth users
- Expanded coverage of North African observation conditions
- Better mobile experience
Setup once:
make install-dev # installs dev deps + pre-commit hooksDay-to-day:
make test # all tests
make test-smoke # smoke tests (no external deps)
make test-unit # unit tests (pure logic)
make test-cov # full suite with coverage report (term + HTML)
make lint # ruff lint on tests/
make format # ruff format + autofix on tests/
make precommit # run all pre-commit hooks on all filesCI runs Python 3.11 + 3.12 matrix, ruff lint/format check, pytest, and a coverage gate (--cov-fail-under=20). The threshold is conservative — it tracks the worst-case attainable level without app-code changes — and is raised as new tests land. See .github/workflows/test.yml.
pytest.ini defines markers (smoke, unit, integration, slow) for filtering. tests/conftest.py provides Flask app fixtures and gracefully skips runs without read access to .env or writable data/ (production runs as root and is unaffected).
Feedback, bug reports, and suggestions are genuinely welcome.
- Issues: Open a GitHub issue for bugs or feature requests
- Pull requests: Always welcome, especially for documentation improvements
- Scientific feedback: If you spot a methodological error, please flag it — the project depends on rigor
There is no contributor's guide yet. For now, common sense and clear communication are enough.
This project is released under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0).
You are free to share and adapt the work for non-commercial purposes, as long as you:
- 📌 Give appropriate attribution to the author
- 🚫 Do not use it for commercial purposes without explicit permission
- 🔄 Distribute derivative works under the same license
For commercial use, hosted SaaS partnerships, or enterprise integration, please contact the maintainer via GitHub issues.
Full license text: https://creativecommons.org/licenses/by-nc-sa/4.0/
ASTRO-SCAN relies entirely on public scientific infrastructure made available by:
- NASA (APOD, ephemerides data)
- NOAA Space Weather Prediction Center
- NORAD / CelesTrak (TLE catalog)
- The Skyfield project (Brandon Rhodes)
- The Astropy collaboration
Without these open scientific resources, this project would not exist.
Maintained by Zakaria Chohra, Tlemcen, Algeria. For contact, please use GitHub issues or discussions.
Last updated: May 18, 2026 — v2.8.0-lighthouse-58pct-ui-clean
