Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

95 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

z-control Landing Page

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.

🌟 Features

  • 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)

πŸš€ Live Demo

πŸ”— View Live Site on Google Firebase

πŸ“± Showcased Applications

z-control QR Code App

z-control Translator App

z-control Ionic Setup App

  • 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

πŸ› οΈ Tech Stack

  • 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

πŸ“ Project Structure

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/policies and loaded dynamically.
  • GitHub analytics architecture and Firestore integration are described in docs/GITHUB_ANALYTICS_ARCHITECTURE.md.

πŸ”§ Development

Available Scripts

# 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

Environment Configuration

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-env locally or in CI to create src/environments/environment*.ts.
  • Do not commit src/environments/environment*.ts or an index.html with real measurement ID.

πŸš€ Deployment

Firebase Hosting

  1. Install Firebase CLI

    npm install -g firebase-tools
  2. Login to Firebase

    firebase login
  3. Initialize project (first time only)

    firebase init hosting
  4. Build and deploy

    ionic build --prod
    firebase deploy

For detailed deployment instructions, see docs/FIREBASE_DEPLOYMENT_GUIDE.md.

🎨 Customization

Theming

The app uses Ionic CSS Variables for consistent theming. Main theme files:

  • src/theme/variables.scss - Color definitions
  • src/global.scss - Global styles
  • Component-specific SCSS files for custom styling

Adding New Apps

Update home page content and routing

πŸ“š Documentation & Changelogs

Technical Documentation

πŸ“– For a complete overview and documentation index, see docs/README.md

Quick Links:

Changelogs

Changelogs for each app are stored in src/assets/logs/change-logs/:

  • CHANGELOG_LANDING-PAGE.md β€” for the landing page
  • CHANGELOG_MULTI-LANGUAGE-TRANSLATOR.md β€” for the multi-language translator app
  • CHANGELOG_IONIC-SETUP.md β€” for the ionic setup app
  • CHANGELOG_QR-CODE.md β€” for the z-control QR Code Generator app

πŸ§ͺ Testing

# Run unit tests
npm run test

# Check code coverage
npm run test:coverage

πŸ“± Mobile App Development

This 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.

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘¨β€πŸ’» Author

Hans ZΓΆchbauer

πŸ™ Acknowledgments


Built with ❀️ using Ionic and Angular

About

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.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages