A modern, mobile-first landing page built with Ionic and Angular, highlighting the z-control open-source applications and developer tools. Designed for responsiveness, accessibility, and seamless user experience across all devices.
- Modern Design: Clean, professional interface following Ionic design principles
- Dark Mode Support: Automatic light/dark theme switching with proper contrast
- Mobile Responsive: Optimized for all devices from mobile to desktop
- Multi-language Support for Privacy: Privacy policies available in German and English
- Version Management: Built-in changelog system with user-friendly updates
- Firebase Ready: Configured for Firebase hosting and deployment with Firebase Analytics
- Accessibility: WCAG compliant with keyboard navigation and screen reader support
- Firebase Analytics: Integrated event tracking and consent management (see details)
- GitHub Analytics: Automated fetching and display of repository traffic (see details)
π View Live Site on Google Firebase
- Web App: Try directly in browser without installation
- Android App: Available on Google Play Store
- Source Code: GitHub Repository
- Features: QR code generation, offline functionality, multi-language support, qr code settings, configured e-mail sending
- Web App: Try directly in browser without installation
- Android App: Available on Google Play Store β currently available through closed testing.
- Source Code: GitHub Repository
- Features: Multi-language translation, text-to-speech functionality, customizable translation preferences, generous free translation allowance
- Web App: Try directly in browser without installation
- Android App: Available on Google Play Store β currently available through internal testing.
- Source Code: GitHub Repository
- Features: Starter template for Ionic Apps, Quota management, built in help, and settings tab with accordions for configuration, Feedback, Change-log, Privacy Policy, and support
- Framework: Ionic 8 with Angular 20
- Language: TypeScript
- Styling: SCSS with Ionic CSS Variables
- Hosting: Firebase Hosting
- Build Tool: Angular CLI
- Icons: Ionicons
- Firebase Analytics: Event tracking, consent management
- Firebase Storage
- GitHub Analytics API: Automated traffic data collection and display
landing-page/
ββ .angular/
ββ .browserslistrc
ββ .editorconfig
ββ .env.local # local secrets (do NOT commit)
ββ .eslintrc.json
ββ .gitignore
ββ .vscode/
ββ angular.json
ββ capacitor.config.ts
ββ firebase-example.json
ββ ionic.config.json
ββ karma.conf.js
ββ LICENSE
ββ package-lock.json
ββ package.json
ββ README.md
ββ tsconfig.app.json
ββ tsconfig.json
ββ tsconfig.spec.json
ββ docs/ # technical documentation
β ββ FIREBASE_ANALYTICS.md
β ββ FIREBASE_ANALYTICS_USED_IN_APP.md
β ββ FIREBASE_CONFIG_ENVIRONMENT_FILES.md
β ββ FIREBASE_DEPLOYMENT_GUIDE.md
β ββ FIREBASE_SECURITY.md
β ββ GITHUB_ANALYTICS_ARCHITECTURE.md
β ββ GITHUB_ANALYTICS_TEST_LOCALLY.md
β ββ GITHUB_ANALYTICS_EXPLANATION.md
β ββ PRIVACY_POLICY_ARCHITECTURE.md
β ββ unit-tests/
β β ββ FIREBASE_ANALYTICS_SERVICE_TESTS.md
β β ββ UNIT_TESTING_PLAN.md
β ββ ...other docs...
ββ functions/ # Firebase Cloud Functions (GitHub Analytics)
β ββ lib/
β ββ node_modules/
β ββ src/
β β ββ shared/
β β β ββ GitHubConstants.ts
β β ββ GitHubAnalytics.ts
β β ββIndex.ts
β β ββ testEnv.ts
β ββ ...other files, like package.json, tsconfig.json...
ββ node_modules/
ββ shared/
β ββ GitHubConstants.ts
ββ tools/
β ββ generate-env.js
β ββ backup_non_committed_files.ps1
β ββ backup_non_committed_files.txt
β ββ CHANGELOG_template.md
β ββ CHANGELOG_template DE.md
β ββ README.md
ββ src/
ββ index.html
ββ index_DEBUG_FIREBASE-config.html # local debug index (do NOT commit)
ββ global.scss
ββ main.html
ββ environments/
β ββ environment.ts
β ββ environment.prod.ts
ββ assets/
β ββ icon/
β ββ app-docs/
β β ββ backup-scripts-app/
β β β ββ example folders and files
β β ββ backend-functions-app/
β β ββ github-analytics-help.md
β β ββ firebase-functions-multi-app-deploy-playbook.md
β ββ logs/
β β ββ change-logs/
β β ββ CHANGELOG_LANDING-PAGE.md
β β ββ CHANGELOG_MULTI-LANGUAGE-TRANSLATOR.md
β β ββ CHANGELOG_IONIC-SETUP.md
β β ββ CHANGELOG_QR-CODE.md
β ββ privacy/
β ββ policies/
β ββ landing-page/
β β ββ landing-page-en.html
β β ββ landing-page-de.html
β ββ multi-language-translator/
β β ββ multi-language-translator-en.html
β β ββ multi-language-translator-de.html
β ββ qr-code-generator/
β ββ qr-code-generator-en.html
β ββ qr-code-generator-de.html
ββ app/
ββ app.component.ts
ββ app.component.html
ββ app.component.scss
ββ app.routes.ts
ββ home/ # main landing page sources
ββ privacy/ # privacy policy system
β ββ components/
β β ββ privacy-viewer/
β β ββ privacy-viewer.component.ts
β β ββ privacy-viewer.component.html
β ββ policies/
β β ββ README.md
β ββ services/
β ββ privacy.service.ts
ββ services/ # app-wide / cross-cutting services
β ββ firebase-analytics.service.ts
β ββ firebase-firestore.service.ts
β ββ local-storage.service.ts
β ββ utils.service.ts
ββ ui/
β ββ components/
β ββ backup-scripts-section/
β ββ footer/
β ββ github-analytics/
β ββ header/
β ββ markdown-viewer/
β ββ multi-language-translator-section/
β ββ ionic-setup-section/
β ββ qr-code-generator-section/
β ββ index.ts
ββ theme/ # global styling (variables, global.scss)
Notes:
- Real Firebase config and local debug index are not committed (
.env.local,index_DEBUG_FIREBASE-config.html). - Privacy policy HTML templates are in
src/assets/privacy/policiesand loaded dynamically. - GitHub analytics architecture and Firestore integration are described in docs/GITHUB_ANALYTICS_ARCHITECTURE.md.
# generate environment files
npm run generate-env
# Development server
ionic serve
# Build for production
ionic build --prod
# Run tests
ng test
# Lint code
ng lint
Update version information and firebase config in .env.local and run npm run generate-env.
Here is the structure of the generated environment files (src/environments/environment.ts and src/environments/environment.prod.ts). This structure is committed in environment.template.ts, but the actual files with real values are generated locally and not committed to the repository.
// @ts-nocheck
export const environment = {
production: __PRODUCTION__,
version: {
major: __MAJOR__,
minor: __MINOR__,
date: "__DATE__",
},
logAnalyticsInDevMode: __LOG_ANALYTICS_IN_DEV_MODE__,
useFirebaseEmulator: __USE_FIREBASE_EMULATOR__,
appSection: {
QR: {
maxInputLength: __appSection.QR.MAX_INPUT_LENGTH__,
},
MLT: {
maxTargetLanguages: __appSection.MLT.MAX_TARGET_LANGUAGES__,
maxFreeTranslateCharsPerMonth: __appSection.MLT.MAX_FREE_TRANSLATE_CHARS_PER_MONTH__,
maxFreeTranslateCharsPerMonthForUser: __appSection.MLT.MAX_FREE_TRANSLATE_CHARS_PER_MONTH_FOR_USER__,
maxFreeTranslateCharsBufferPerMonth: __appSection.MLT.MAX_FREE_TRANSLATE_CHARS_BUFFER_PER_MONTH__,
maxInputLength: __appSection.MLT.MAX_INPUT_LENGTH__,
},
IS: {
maxFeatureCharsTotalPerMonth: __appSection.IS.MAX_FEATURE_CHARS_TOTAL_PER_MONTH__,
maxFeatureCharsUserPerMonth: __appSection.IS.MAX_FEATURE_CHARS_USER_PER_MONTH__,
},
},
firebase: {
apiKey: "__FIREBASE_API_KEY__",
authDomain: "__FIREBASE_AUTH_DOMAIN__",
projectId: "__FIREBASE_PROJECT_ID__",
storageBucket: "__FIREBASE_STORAGE_BUCKET__",
messagingSenderId: "__FIREBASE_MESSAGING_SENDER_ID__",
appId: "__FIREBASE_APP_ID__",
measurementId: "__FIREBASE_MEASUREMENT_ID__",
},
};Important: do NOT commit generated files
- Keep real Firebase config in
.env.local(listed in .gitignore). - Run
npm run generate-envlocally or in CI to createsrc/environments/environment*.ts. - Do not commit
src/environments/environment*.tsor an index.html with real measurement ID.
-
Install Firebase CLI
npm install -g firebase-tools
-
Login to Firebase
firebase login
-
Initialize project (first time only)
firebase init hosting
-
Build and deploy
ionic build --prod firebase deploy
For detailed deployment instructions, see docs/FIREBASE_DEPLOYMENT_GUIDE.md.
The app uses Ionic CSS Variables for consistent theming. Main theme files:
src/theme/variables.scss- Color definitionssrc/global.scss- Global styles- Component-specific SCSS files for custom styling
Update home page content and routing
π For a complete overview and documentation index, see docs/README.md
Quick Links:
- Dark Mode Guide - Implementation details for dark mode support
- Firebase Security - Security configuration and best practices
- Firebase Analytics Usage - Analytics integration and event tracking
- Firebase Analytics Architecture - Service architecture and implementation
- GitHub Analytics Architecture - Automated traffic data collection and Firestore integration
- Privacy Policy Architecture - Multi-language privacy system details
- Firebase Deployment Guide - Deployment procedures
- Firebase Config Environment Files - Environment setup and secrets management
- Unit Testing Plan - Comprehensive testing strategy
- Firebase Analytics Service Tests - Detailed test documentation
Changelogs for each app are stored in src/assets/logs/change-logs/:
CHANGELOG_LANDING-PAGE.mdβ for the landing pageCHANGELOG_MULTI-LANGUAGE-TRANSLATOR.mdβ for the multi-language translator appCHANGELOG_IONIC-SETUP.mdβ for the ionic setup appCHANGELOG_QR-CODE.mdβ for the z-control QR Code Generator app
# Run unit tests
npm run test
# Check code coverage
npm run test:coverageThis landing page showcases the z-control mobile application. The mobile app is now available on the Google Play Store. For updates and source code, see the z-control QR Code Generator app in GitHub repository.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Hans ZΓΆchbauer
- Email: hans.zoechbauer@gmail.com
- GitHub: zoechbauer
- Built with Ionic Framework
- Icons by Ionicons
- Hosted on Firebase
- Hosted on Google Play
Built with β€οΈ using Ionic and Angular