Gamify your goals. Conquer your peaks.
A local-first productivity engine that maps your goals as mountains and blocks your time.
This repository hosts the landing page and privacy policy for the ClimbStack mobile app, served via GitHub Pages at climbstack.github.io.
Looking for the app source code? Head to ClimbStack/climbstack-app.
| Feature | Description |
|---|---|
| π¨ Alpine Dusk Theme | A custom dark-mode design built with CSS custom properties and the Outfit typeface. |
| π Bilingual (EN / IT) | Full English and Italian support with automatic browser language detection, manual toggle, URL ?lang= param, and localStorage persistence. |
| π± Fully Responsive | Mobile-first layout using CSS Grid and clamp() fluid typography. |
| β‘ Zero Dependencies | Pure vanilla HTML/CSS/JS β no build step, no bundlers. Bootstrap is loaded via CDN for utility classes only. |
| π Privacy-First | No cookies, no analytics, no tracking scripts. The privacy policy page is included as required by Google Play. |
climbstack.github.io/
β
βββ index.html # Landing page β hero, features, open source CTA
βββ privacy.html # Privacy policy (required by Google Play Console)
βββ README.md
β
βββ assets/
β βββ icon.png # App icon (used as favicon + navbar brand)
β βββ feature.png # Feature graphic (hero section screenshot)
β
βββ css/
β βββ globals.css # Base reset, accessibility helpers, navbar glass effect
β βββ climbstack.css # "Alpine Dusk" theme β all custom styles for the site
β βββ font-awesome/ # Font Awesome 6 (self-hosted, icons + webfonts)
β βββ css/
β βββ webfonts/
β
βββ js/
βββ i18n.js # Language switch engine (EN/IT auto-detect + toggle)
βββ footer.js # Shared footer component injected via JS
βββ i18n/
βββ climbstack.js # Translation dictionary β landing page
βββ climbstack_privacy.js # Translation dictionary β privacy page
The site uses a custom dark palette called Alpine Dusk, inspired by mountain twilight:
| Token | Color | Usage |
|---|---|---|
--lu-bg-main |
#0D1117 |
Page background |
--lu-bg-surface |
#161B22 |
Cards, navbar, footer |
--lu-primary |
#4397B8 |
CTAs, links, primary actions |
--lu-accent |
#E5A970 |
Feature icons, highlights |
--lu-text-main |
#FFFFFF |
Headings, primary text |
--lu-text-sec |
#8B949E |
Body text, descriptions |
--lu-border |
#30363D |
Dividers, card borders |
The language system supports English and Italian with this priority:
- URL parameter
?lang=enor?lang=it localStoragekeyclimbstack-site-lang- Browser
navigator.languageauto-detection
Each page loads its own translation dictionary (js/i18n/climbstack*.js) that provides a window.I18N_DATA object, consumed by the shared js/i18n.js engine.
No build tools required. Just serve the files:
# Python
python3 -m http.server 8000
# Node.js
npx serve .
# Then open http://localhost:8000| Repository | Description |
|---|---|
| ClimbStack/climbstack-app | The ClimbStack mobile app (React Native) |
| ClimbStack/climbstack.github.io | This repo β landing page & privacy policy |
This project is open source and available under the MIT License.
Built with β€οΈ by the ClimbStack team