| .gitignore | ||
| Dockerfile | ||
| index.html | ||
| Makefile | ||
| README.md | ||
Girlspace
A client-side 3D visualization of feminine identity as a vector in three dimensions: aesthetic, energy, and agency.
Every woman is a vector in girlspace.
\vec{G} = (x, y, z)wherex, y, z \in [-1, 1]. Your position is fluid. Your identity is yours to define.No position is inherently better. Girlspace is descriptive, not prescriptive. You get to move, evolve, and exist exactly as you are.
Axes
| Axis | Negative pole | Positive pole |
|---|---|---|
| x — Aesthetic | Goth (dark, alternative, moody) | Girly Pop (bright, playful, hyper-feminine) |
| y — Energy | Babygirl (soft, cute, needs care) | Mommy (dominant, nurturing, handles everything) |
| z — Agency | Girl Failure (chaotic, struggling, a mess) | Girl Boss (disciplined, driven, in control) |
A handful of archetypes are plotted for reference — Dark Dominatrix, Goth Mommy, High Femme Exec, Corporate Girlboss, Alt Softie, Chaotic Babygirl, Girlypop Babygirl Failure, Tryhard Failure, Soft Girl Next Door.
Running
It's a single HTML file (index.html) with all dependencies loaded from
CDNs (Three.js + KaTeX). Because it uses ES modules, it must be served
over HTTP — opening it as a file:// URL won't work.
Any static file server is fine. With Python:
python3 -m http.server 8765
Then open http://localhost:8765/.
Controls
| Input | Action |
|---|---|
| Sliders | Set your (x, y, z) position |
| Archetype point | Hover for label and coordinates |
| Left-click drag | Spin the graph around its Y axis |
| Right-click drag | FPS-style mouse-look (yaw + pitch) |
| Scroll wheel | Dolly zoom |
| W / S | Fly forward / back along the view direction |
| A / D | Strafe left / right |
| Q / E | Roll counter-clockwise / clockwise |
| Space | Toggle play/pause for the auto-spin |
| Esc | Reset to the default viewpoint and resume auto-spin |
| Play/pause button (bottom-right) | Same as Space |
The page captures the mouse (pointer lock) while either button is held so the cursor doesn't escape the canvas during a drag.
Sharing
The URL hash always reflects your current vector — e.g.
index.html#0.42,-0.30,0.85. The Copy link button copies the current
URL to the clipboard; pasting that link in another tab restores the same
vector. Hashes are read on load and on hashchange.
File layout
This is a single static file. There's no build step, no bundler, and no package.json. Just:
girlspace/
├── index.html ← everything (HTML, CSS, JS)
├── README.md
├── LICENSE
└── .gitignore
External libraries are pulled at runtime from unpkg.com and
cdn.jsdelivr.net.
License
GPL-3.0 — see LICENSE.