47 lines
2.3 KiB
Markdown
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.
|