City-portal/README.md

47 lines
2.3 KiB
Markdown

# City Portal - A STEAM Club Project
> [!NOTE]
> Everything described underneath is the theoretical goal of the project -
> certainly not the state it's in, and probably not the state it will ever be in...
---
Imagine, in the city of the future:
a single, unified digital layer connecting every source of urban knowledge.
**City Portal** is that layer - an open, extensible platform where
**all data, all events, all locations** are accessible in one place.
City Portal exposes a **GraphQL API** that provides **free read access** to the city's datasets -
from transportation networks to local events, from environmental sensors to cultural archives.
Anyone can build on it: dashboards, analytics tools, or public displays that bring the city
to life.
Certain data domains (e.g. weather, utilities, public safety) are writable only by
**authorized city devices**, ensuring authenticity to maintain the City Portal's integrity.
Beyond data aggregation, City Portal aims to become a **platform for experimentation**.
Students, researchers, artists, and engineers can collaborate through the same interface to:
* Build interactive maps, visualizing live data feeds
* Integrate IoT sensors and public devices
* Run simulations and predictive models
* Develop mobile or AR applications using open datasets
* Create educational experiences around real urban systems
The project promotes **STEAM learning** by mixing science, technology, engineering, art,
and mathematics into one practical challenge: making cities more understandable, efficient, and
inclusive through data.
City Portal is fully **open source**, community-driven, and designed for adaptability.
Each deployment in a different city would form part of a broader network of civic APIs -
**a group of connected cities**, able to exchange verified data to form a digital ecosystem of
urban knowledge.
The main mission of City Portal is to be a framework for **digital citizenship**,
where information is treated as a shared resource and every resident, developer, or policymaker
can take part in shaping the city's future.
## Run locally
Use `docker compose` or `podman compose` at the project root. Then, `cd` into `backend/` and
type `cargo run`. Cargo is not currently part of the compose as it has to recompile everything every time,
which is a massive pain.