Skip to content

Conversation

@Pushkar111
Copy link

@Pushkar111 Pushkar111 commented Dec 13, 2025

Add Static Marketing Website with Deep Linking Support

Problem

Zplit needs a static website to:

  • Advertise the decentralized payment-splitting application
  • Host .well-known/assetlinks.json for Android App Links (deep linking)
  • Establish web presence before app launch

Currently, there is no website to showcase the project or enable deep linking functionality.

Solution

Created a minimalistic static marketing website with:

Design

  • Green minimalistic theme (#10B981) aligned with issue Call for Designers #2 design philosophy
  • Responsive layout (mobile-first, breakpoints at 768px/480px)
  • Modern aesthetics using Inter font, smooth animations, clean spacing
  • Accessibility with semantic HTML5 and proper ARIA labels

Sections

  1. Hero - Tagline, CTA buttons, feature badges
  2. Features - 6 cards highlighting privacy, offline-first, analytics, groups, OCR, Web3
  3. How It Works - 3-step process (Create Group → Add Expenses → Settle Up)
  4. App Preview - Mockup placeholder with disclaimer
  5. Tech Stack - Technology grid (Flutter, Riverpod, Hive, P2P methods)
  6. About/Community - Social links (GitHub, Telegram, Discord, X)
  7. Footer - Sitemap and copyright

Technical Features

  • ✅ Pure HTML/CSS/JS (no build step, no dependencies)
  • ✅ SEO optimized (meta tags, Open Graph, Twitter Cards)
  • ✅ Smooth scroll navigation
  • ✅ Intersection Observer fade-in animations
  • ✅ Android App Links configuration (.well-known/assetlinks.json)
  • ✅ Comprehensive deployment documentation

Visual Preview

Generated Assets

Zplit Logo (Placeholder)
Zplit Logo

Hero Illustration
Hero Illustration

App Mockup Placeholder
App Mockup

Website Demo

Full Website Walkthrough (Video)

Zplit-recording.mp4

Files Changed

website/
├── index.html                    # Main landing page (280 lines)
├── .well-known/
│   └── assetlinks.json          # Android deep linking config
├── css/
│   └── styles.css               # Green minimalistic theme (560 lines)
├── js/
│   └── main.js                  # Smooth scroll & animations (60 lines)
├── assets/
│   └── images/
│       ├── stability-logo.svg   # StabilityNexus logo (copied)
│       ├── zplit-logo.png       # Generated placeholder
│       ├── hero-illustration.png # Generated placeholder
│       └── app-mockup.png       # Generated placeholder
└── README.md                    # Deployment guide (150 lines)

How to Test

# Checkout the branch
git checkout feat/static-marketing-website

# Serve the website locally
cd website
python -m http.server 8000

# Visit http://localhost:8000

Verify:

  • Website loads without errors
  • All sections display correctly
  • Smooth scroll navigation works
  • Responsive design on mobile/tablet/desktop
  • .well-known/assetlinks.json is accessible

Deployment

See website/README.md for detailed deployment options:

  • GitHub Pages (recommended)
  • Vercel
  • Netlify
  • Custom server (Nginx config provided)

Deep Linking Setup

After deployment, update assetlinks.json:

  1. Generate SHA256 fingerprint:

    keytool -list -v -keystore /path/to/release.keystore -alias your-alias
  2. Replace PLACEHOLDER_REPLACE_WITH_ACTUAL_SHA256_FINGERPRINT in assetlinks.json

  3. Verify with Google's Digital Asset Links tool

Checklist

  • Code follows existing style and patterns
  • No unrelated files modified
  • Documentation added (website/README.md)
  • Tested locally (all sections working)
  • Responsive design verified
  • SEO meta tags added
  • No new dependencies added
  • Conventional commit message used

Related Issues

Related to #2 (Design guidelines)


Ready for review! 🚀

Summary by CodeRabbit

Release Notes

  • New Features

    • Launched a complete website featuring a hero section, detailed feature highlights, step-by-step how-it-works guide, technology stack showcase, and community engagement areas.
    • Added interactive animations and smooth navigation for an enhanced browsing experience.
    • Enabled Android app deep linking support.
  • Documentation

    • Added comprehensive README with website structure, deployment options, and customization instructions.

✏️ Tip: You can customize this high-level summary in your review settings.

- Minimalistic green theme design (#10B981)
- Responsive hero, features, and screenshot sections
- Android assetlinks.json for deep linking
- Pure HTML/CSS/JS (no build step)
- Generated placeholder assets (logo, mockups, illustrations)
- Comprehensive deployment documentation

Closes #[ISSUE_NUMBER]
@coderabbitai
Copy link

coderabbitai bot commented Dec 13, 2025

Walkthrough

A comprehensive new website structure for Zplit has been added under the website/ directory. The implementation includes an Android deep-linking configuration file, complete documentation, a styled single-page website with semantic HTML markup, CSS design tokens and component styling, and client-side interactivity for smooth navigation and viewport-triggered animations.

Changes

Cohort / File(s) Summary
Configuration & Documentation
website/.well-known/assetlinks.json, website/README.md
Added Android app association metadata for deep linking and comprehensive documentation covering site structure, design, deployment options, setup instructions, and maintenance guidelines.
Frontend Markup & Styling
website/index.html, website/css/styles.css
New single-page website with navigation, hero, features, how-it-works, app preview, tech stack, community, and footer sections. Accompanying stylesheet provides CSS design tokens (colors, typography, spacing, shadows), base styling, responsive grid layouts, component styles (buttons, cards, sections), and animations across multiple breakpoints.
Frontend Behavior
website/js/main.js
Client-side script implementing smooth anchor-link scrolling, IntersectionObserver-driven fade-in animations for cards and components, scroll-based navigation shadow toggle, and placeholders for future mobile menu and deep-link handling.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • CSS file: Review design token application, responsive breakpoint logic, and component coverage across all defined states
  • HTML file: Verify semantic structure, link validity, meta tags accuracy, and accessibility best practices
  • JavaScript file: Confirm cross-browser smooth-scroll behavior, IntersectionObserver implementation, and scroll event performance (potential listener optimization)
  • assetlinks.json: Confirm placeholder values will be replaced with production app identifiers before deployment

Poem

🐰 A website blooms, all dressed in style,
With cards that fade as users smile,
From hero calls to tech so new,
Zplit's house now has a vibrant view! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title accurately describes the main change: adding a static marketing website with deep linking support (Android App Links via assetlinks.json), which aligns with the primary objectives and file changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (3)
website/README.md (1)

7-19: Add language identifier to the fenced code block.

The directory tree structure would benefit from a language identifier for consistent rendering across Markdown viewers.

Apply this diff:

-```
+```text
 website/
 ├── index.html              # Main landing page
 ├── .well-known/
website/js/main.js (2)

9-29: Consider accounting for sticky header offset in smooth scroll.

The smooth scroll implementation works well but doesn't account for the sticky navigation header. Content scrolled to may be partially hidden behind the fixed header.

Consider adjusting the scroll position to account for the header height:

         if (targetElement) {
             e.preventDefault();
+            const navHeight = document.querySelector('.nav')?.offsetHeight || 0;
+            const targetPosition = targetElement.offsetTop - navHeight;
+            window.scrollTo({
+                top: targetPosition,
+                behavior: 'smooth'
+            });
-            targetElement.scrollIntoView({
-                behavior: 'smooth',
-                block: 'start'
-            });
         }

62-76: Add null check for nav element.

The code queries for .nav but doesn't verify it exists before accessing it in the scroll event handler. While this works when the element exists, adding defensive checks improves robustness.

Consider adding a null check:

 let lastScrollTop = 0;
 const nav = document.querySelector('.nav');
 
-window.addEventListener('scroll', () => {
+if (nav) {
+  window.addEventListener('scroll', () => {
     const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
 
     // Add shadow when scrolled
     if (scrollTop > 50) {
         nav.style.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.1)';
     } else {
         nav.style.boxShadow = 'none';
     }
 
     lastScrollTop = scrollTop;
-});
+  });
+}

Note: The lastScrollTop variable is assigned but never used. If it's for a future hide/show navbar feature, consider adding a comment to clarify intent.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a490608 and 5b77603.

⛔ Files ignored due to path filters (4)
  • website/assets/images/app-mockup.png is excluded by !**/*.png
  • website/assets/images/hero-illustration.png is excluded by !**/*.png
  • website/assets/images/stability-logo.svg is excluded by !**/*.svg
  • website/assets/images/zplit-logo.png is excluded by !**/*.png
📒 Files selected for processing (5)
  • website/.well-known/assetlinks.json (1 hunks)
  • website/README.md (1 hunks)
  • website/css/styles.css (1 hunks)
  • website/index.html (1 hunks)
  • website/js/main.js (1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
website/README.md

7-7: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🔇 Additional comments (4)
website/css/styles.css (1)

1-596: LGTM! Well-structured stylesheet with solid design system foundation.

The CSS implementation demonstrates good practices:

  • Clear design token organization with CSS custom properties
  • Semantic class naming conventions
  • Responsive design with appropriate breakpoints
  • Smooth animations using modern CSS
  • Good component isolation and reusability

The stylesheet provides a solid foundation for the marketing website with maintainable, scalable code.

website/index.html (2)

1-33: Excellent SEO and social media metadata implementation.

The head section includes comprehensive meta tags covering:

  • Proper viewport configuration for mobile responsiveness
  • Descriptive SEO metadata
  • Open Graph tags for social sharing
  • Twitter Card configuration
  • Optimized font loading with preconnect

This provides a solid foundation for search engine visibility and social media sharing.


36-255: Strong semantic HTML structure with good accessibility foundation.

The page structure demonstrates solid web standards:

  • Semantic HTML5 elements (nav, section, footer)
  • Proper heading hierarchy (h1 → h2 → h3)
  • Alt text for images (though verify these are descriptive enough for screen readers)
  • Clear content organization with meaningful sections
  • Accessible link text (avoiding generic "click here")

This provides a good foundation for accessibility and SEO.

website/js/main.js (1)

34-57: Excellent use of IntersectionObserver for performant animations.

The fade-in animation implementation uses IntersectionObserver, which is the modern, performant approach for viewport-based animations. The configuration with threshold and rootMargin provides a smooth user experience.

@Pushkar111
Copy link
Author

Pushkar111 commented Dec 13, 2025

Team Name: Dev Engers

Team Members:

  1. Pushkar Modi
  2. Parth Raninga
  3. Pranjal Yadav

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant