Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

73 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MetraNode Logo

🎨 MetraNode

Transform Your Notion Workspace with Beautiful, Custom Widgets

License Made with React

App Icon

A powerful visual builder for creating stunning, fully customizable Notion widgets.
No coding required β€’ Real-time preview β€’ One-click export β€’ Works anywhere

✨ Features β€’ πŸš€ Quick Start β€’ πŸ“¦ Widgets β€’ 🎯 Usage Guide β€’ πŸ› οΈ Tech Stack


✨ Features

🎨 Visual Builder Interface

  • ⚑ Real-time Preview - See your widget update instantly as you customize
  • πŸ“ Resizable Canvas - Test at any size before exporting
  • πŸŽ›οΈ Intuitive Controls - Easy-to-use configuration panels for every widget
  • 🌈 Smart Color Picker - Brand presets + custom palette support
  • πŸ’Ύ Auto-save Settings - Never lose your work

πŸš€ Export & Integration

  • πŸ“₯ One-Click Download - Get standalone HTML files ready to host
  • πŸ“‹ Copy to Clipboard - Instant code copy for quick embedding
  • 🌐 Universal Compatibility - Works in Notion, websites, blogs, anywhere
  • 🎯 Zero Dependencies - Fully self-contained (except Google Fonts CDN)
  • πŸ”— Multiple Hosting Options - GitHub Pages, Vercel, Netlify, and more

🌟 Smart Brand System

  • 🎨 Logo Color Extraction - Upload any logo, auto-extract 8-color theme
  • 🌈 10-Color Neon Palette - Official JaZeR cyberpunk brand colors
  • 🎭 8 Auto Presets - Monochrome, Contrast, Vibrant, Professional, Dark, Light, Neon, Minimal
  • πŸŒ“ Intelligent Theme Switching - System-aware light/dark mode support
  • πŸ’Ž Custom Color Palettes - Full control over every color element

🎯 Widget Capabilities

  • πŸ“¦ 8+ Widget Types - Clocks, weather, galleries, counters, and more
  • βš™οΈ Fully Customizable - Control colors, fonts, sizes, effects, animations
  • πŸ“± Responsive Design - Automatically adapts to mobile, tablet, and desktop
  • β™Ώ Accessibility First - WCAG AA compliant with keyboard navigation
  • ✨ Visual Effects - Neon glows, gradients, glassmorphism, animations

πŸš€ Quick Start

Prerequisites

Installation

# Clone the repository
git clone https://github.com/yourusername/notion-widget-builder.git
cd notion-widget-builder

# Install dependencies
npm install

# Start development server (opens at http://localhost:3000)
npm run dev

Build & Preview

# Create optimized production build
npm run build

# Preview production build locally
npm run preview

# Run ESLint
npm run lint

Deploy to GitHub Pages

# Build and deploy in one command
npm run deploy

Note: The app is configured for GitHub Pages deployment at https://jazer-444.github.io/notion-widget-builder/. Update base in vite.config.js for custom domains.


πŸ“¦ Widget Catalog

⏰ Clock Widget

The Ultimate Time Display

  • πŸ• 12+ Display Styles - Analog, digital, flip, minimalist, and more
  • 🌍 Timezone Support - Show time for any location worldwide
  • ⏱️ Timer & Stopwatch - Built-in productivity tools
  • 🎨 Custom Fonts - Choose from Google Fonts library
  • βš™οΈ Full Customization - Colors, sizes, formats (12/24hr)

🌀️ Weather Widget

Real-time Weather Information

  • 🌑️ Current Conditions - Temperature, humidity, wind speed, pressure
  • πŸ“… 7-Day Forecast - Plan ahead with extended forecasts
  • πŸ“ Location-Based - Automatic geolocation or manual city search
  • πŸŒ… Sunrise/Sunset - Golden hour times included
  • 🎨 4 Layout Styles - Compact, detailed, card, and minimal views
  • 🌐 Open-Meteo API - Free, accurate weather data

⏳ Countdown Widget

Event Countdown Timer

  • πŸ“† Custom Target Dates - Count down to any date and time
  • πŸŽ‰ Confetti Effect - Celebrate when countdown reaches zero
  • πŸ”„ Past Date Handling - Automatically switches to "time since" mode
  • πŸ’« Flip Animation - Smooth, animated number transitions
  • 🏷️ Custom Labels - Personalize days/hours/minutes/seconds text

πŸ”’ Counter Widget

Simple Number Tracker

  • βž•βž– Increment/Decrement - Track any number up or down
  • 🎯 Min/Max Limits - Set boundaries for your counter
  • πŸ”„ Reset Function - Quick return to starting value
  • πŸ“Š Step Values - Count by 1s, 5s, 10s, or any custom amount
  • 🎨 Goal Progress - Visual progress bar towards target

πŸ–ΌοΈ Image Gallery Widget

Beautiful Image Showcase

  • 🎭 Multiple Layouts - Grid, carousel, masonry styles
  • πŸ” Lightbox View - Full-screen image viewing
  • πŸ“ Caption Support - Add descriptions to each image
  • 🎨 Customizable Spacing - Control gaps and padding
  • πŸ–ΌοΈ Unlimited Images - Add as many images as needed

πŸ’¬ Quotes Widget

Inspirational Quote Display

  • πŸ“š Custom Quote Lists - Add your own motivational quotes
  • πŸ”„ Auto-rotation - Automatically cycle through quotes
  • 🌐 API Integration - Optional fetch from quote APIs
  • ✨ Beautiful Typography - Eye-catching text styling
  • 🎨 Author Display - Show quote sources

πŸ”˜ Button Generator Widget

Custom Styled Buttons

  • 🎨 Multiple Styles - Solid, outline, neon glow effects
  • πŸ˜€ Emoji Support - Add icons to buttons
  • πŸ”— Action Links - Link buttons to any URL
  • ✨ Hover Effects - Interactive animations on mouse-over
  • 🌈 Color Presets - Quick styling with brand colors

πŸ“Š Life Progress Bar Widget

Visual Time Tracker

  • πŸ“… Multiple Time Periods - Year, month, week, day progress
  • πŸ“ˆ Progress Bars - Visual representation of time passing
  • πŸ’ͺ Motivational Display - Encourages making the most of your time
  • 🎯 Customizable Metrics - Choose which time periods to track

All Widgets Include:

βœ… Light/Dark Mode - Automatic system detection or manual toggle
βœ… Brand Themes - Apply JaZeR colors or your own logo palette
βœ… Responsive Sizing - Adapts to any screen size
βœ… Background Textures - Stars, noise, dots, grid, waves
βœ… Export Ready - One-click HTML download
βœ… Zero Dependencies - Self-contained and lightweight


🎯 How to Use

Getting Started in 3 Steps

1️⃣ Build Your Widget

  1. Choose a Widget - Select from 8+ widget types
  2. Customize Everything - Use intuitive controls to adjust:
    • 🎨 Colors (brand presets or custom)
    • πŸ“ Typography (fonts, sizes, weights)
    • πŸ“ Layout (dimensions, spacing, alignment)
    • ✨ Effects (glows, gradients, shadows)
    • βš™οΈ Widget-specific features
  3. Preview in Real-time - See changes instantly
  4. (Optional) Upload your logo to auto-extract brand colors

2️⃣ Export Your Widget

Choose your preferred method:

  • πŸ“₯ Download HTML - Get a standalone .html file
  • πŸ“‹ Copy Code - Copy to clipboard for quick paste

3️⃣ Host & Embed

Quick Hosting Options:

πŸ“˜ GitHub Pages (Free, Recommended)
# Create new repository on GitHub
git init
git add your-widget.html
git commit -m "Add Notion widget"
git branch -M main
git remote add origin https://github.com/yourusername/notion-widgets.git
git push -u origin main

# Enable GitHub Pages in Settings β†’ Pages β†’ Source: main branch
# Your widget URL: https://yourusername.github.io/notion-widgets/your-widget.html
⚑ Vercel (Fastest Deployment)
npm i -g vercel
vercel --prod
# Get instant URL
🎨 Netlify Drop (No CLI)
  1. Go to app.netlify.com/drop
  2. Drag & drop your HTML file
  3. Get instant public URL
πŸ”₯ Other Options
  • Firebase Hosting: firebase deploy
  • Cloudflare Pages: npx wrangler pages deploy
  • Surge: surge your-widget.html
  • AWS S3: Upload to S3 bucket with public access

4️⃣ Add to Notion

  1. Open your Notion page
  2. Type /embed and press Enter
  3. Paste your widget URL
  4. Resize the embed block to fit
  5. πŸŽ‰ Done!

πŸ’‘ Pro Tips

  • 🎨 Brand Consistency: Upload your logo once to generate 8 themed color variations
  • πŸ“ Test Sizes: Use the resizable canvas to preview at different dimensions
  • πŸŒ“ Dark Mode: Enable automatic theme switching for day/night compatibility
  • πŸ”„ Updates: Re-export and replace the hosted file to update your widget
  • πŸ“± Mobile: All widgets are responsive and mobile-optimized
  • β™Ώ Accessibility: Widgets include keyboard navigation and screen reader support

πŸ› οΈ Tech Stack

Built with modern, cutting-edge technologies for optimal performance and developer experience.

Core Framework

  • βš›οΈ React 19.2.0 - Latest React with improved performance and concurrent features
  • ⚑ Vite 7.2.5 (Rolldown) - Lightning-fast build tool with next-gen bundler
  • 🎨 TailwindCSS 3.4.18 - Utility-first CSS framework for rapid UI development

UI & Interactions

  • 🎯 Lucide React 0.554.0 - Beautiful, customizable icon library (1000+ icons)
  • 🌈 ColorThief 2.6.0 - Intelligent color extraction from images using k-means clustering
  • πŸ†” nanoid 5.1.6 - Tiny, secure URL-friendly unique ID generator

APIs & Data

  • 🌀️ Open-Meteo API - Free, accurate weather data with no API key required
  • πŸ“ Geolocation API - Browser-native location detection

Development Tools

  • πŸ“ ESLint 9.x - Code quality with modern flat config format
  • πŸ”§ PostCSS + Autoprefixer - Automatic CSS vendor prefixing
  • 🎨 PropTypes - Runtime type checking for React props

Architecture Highlights

πŸ“ Project Structure
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ widgets/          # 8+ modular widget implementations
β”‚   β”‚   β”œβ”€β”€ clock-widget/
β”‚   β”‚   β”‚   β”œβ”€β”€ config.js          # Configuration schema
β”‚   β”‚   β”‚   β”œβ”€β”€ ClockWidget.jsx    # React preview component
β”‚   β”‚   β”‚   └── export.js          # Standalone HTML generator
β”‚   β”‚   β”œβ”€β”€ weather-widget/
β”‚   β”‚   β”œβ”€β”€ countdown-widget/
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ theme/            # Brand system & design tokens
β”‚   β”‚   └── jazerNeonTheme.js
β”‚   β”œβ”€β”€ contexts/         # React Context providers
β”‚   β”‚   └── ThemeContext.jsx
β”‚   β”œβ”€β”€ utils/            # Helper functions
β”‚   β”‚   └── brandThemeGenerator.js
β”‚   β”œβ”€β”€ components/       # Reusable UI components
β”‚   └── App.jsx           # Main application
β”œβ”€β”€ public/               # Static assets
└── dist/                 # Production build output

Widget Architecture Pattern

Every widget follows a consistent three-file modular pattern:

  1. config.js - Schema & defaults

    • Widget metadata (id, label, description)
    • Default configuration values
    • Field definitions for UI controls
    • Brand theme integration
  2. Widget.jsx - React preview

    • Live preview component
    • Receives configuration props
    • Supports light/dark/system modes
    • Real-time updates
  3. export.js - Standalone generator

    • generateWidgetHTML() - Complete HTML document
    • generateWidgetScript() - Vanilla JavaScript
    • Zero external dependencies
    • Inline styles and fonts

Key Technical Features

✨ Glassmorphic UI - Backdrop blur, transparency effects, neon borders
πŸ“Š Container Queries - Responsive widgets that adapt to embed size
🎨 SVG Textures - Inline data URIs for stars, noise, dots, grid, waves
πŸŒ“ Theme System - System preference detection + manual overrides
β™Ώ WCAG AA Compliant - Accessible color contrast and keyboard navigation
πŸ“¦ Code Splitting - Optimized chunks for faster load times
πŸ”’ Type Safety - PropTypes validation throughout


πŸ› οΈ Tech Stack

Core Technologies

Technology Version Purpose
React 19.2.0 UI framework with latest features
Vite 7.2.5 (Rolldown) Lightning-fast build tool with Rolldown bundler
TailwindCSS 3.4.18 Utility-first styling framework
Lucide React 0.554.0 Beautiful icon library (1000+ icons)
ColorThief 2.6.0 AI-powered color extraction from images
ESLint 9.x Code quality with flat config format

Build Configuration

Vite (vite.config.js):

  • Base path: / (custom domain: jazer-444.github.io/notion-widget-builder)
  • Code splitting: React vendor chunk + icon chunk optimization
  • Dev server: Port 3000 with auto-open browser
  • Output: dist/ with optimized assets

Tailwind (tailwind.config.js):

  • Scans: index.html + src/**/*.{js,ts,jsx,tsx}
  • Custom utilities: JaZeR brand colors, neon glow shadows, gradients
  • Responsive breakpoints: Mobile-first approach

ESLint (eslint.config.js):

  • Flat config format (ESLint 9+)
  • React Hooks plugin + React Refresh
  • Ignore unused vars starting with uppercase/underscore

Development Scripts

npm run dev        # Start dev server (http://localhost:3000)
npm run build      # Production build β†’ dist/
npm run preview    # Preview production build locally
npm run lint       # Run ESLint checks
npm run deploy     # Build + deploy to GitHub Pages

Project Structure

notion-widget-builder/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ widgets/                  # Widget modules (8 types)
β”‚   β”‚   β”œβ”€β”€ clock-widget/
β”‚   β”‚   β”‚   β”œβ”€β”€ config.js         # Widget configuration schema
β”‚   β”‚   β”‚   β”œβ”€β”€ ClockWidget.jsx   # React component for preview
β”‚   β”‚   β”‚   └── export.js         # HTML/JS generator
β”‚   β”‚   β”œβ”€β”€ countdown-widget/
β”‚   β”‚   β”œβ”€β”€ counter-widget/
β”‚   β”‚   β”œβ”€β”€ weather-widget/
β”‚   β”‚   β”œβ”€β”€ image-gallery-widget/
β”‚   β”‚   β”œβ”€β”€ quotes-widget/
β”‚   β”‚   β”œβ”€β”€ life-progress-bar-widget/
β”‚   β”‚   └── new-button-generator-widget/
β”‚   β”œβ”€β”€ theme/
β”‚   β”‚   └── jazerNeonTheme.js     # Brand theme constants
β”‚   β”œβ”€β”€ contexts/
β”‚   β”‚   └── ThemeContext.jsx      # React Context for theming
β”‚   β”œβ”€β”€ utils/
β”‚   β”‚   └── brandThemeGenerator.js # Logo color extraction
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   └── BrandLogoUploader.jsx # Logo upload UI
β”‚   β”œβ”€β”€ App.jsx                   # Main application (~25,000+ tokens)
β”‚   β”œβ”€β”€ main.jsx                  # React entry point
β”‚   └── index.css                 # Global styles + Tailwind
β”œβ”€β”€ public/                       # Static assets
β”œβ”€β”€ dist/                         # Production build output
β”œβ”€β”€ index.html                    # HTML entry point
β”œβ”€β”€ vite.config.js                # Vite configuration
β”œβ”€β”€ tailwind.config.js            # Tailwind configuration
β”œβ”€β”€ eslint.config.js              # ESLint configuration
└── package.json                  # Dependencies + scripts

Widget Architecture

All widgets follow a modular three-file pattern:

  1. config.js - Configuration schema

    • id, label, description
    • defaultConfig with all settings
    • fields array defining UI controls
    • Must import jazerNeonTheme for brand consistency
  2. <WidgetName>Widget.jsx - React preview component

    • Receives config prop
    • Renders live preview in builder
    • Supports light/dark/system appearance modes
  3. export.js - Standalone generator

    • generateWidgetHTML(config) - Complete HTML document
    • generateWidgetScript(config) - Vanilla JavaScript
    • Zero dependencies (except Google Fonts CDN)
    • Embeds jazerNeonTheme fonts, variables, and animations

Key Features

  • Glassmorphic UI - Backdrop blur, transparency, neon borders
  • Container Queries - Responsive widgets adapt to embed size
  • SVG Textures - Stars, noise, dots, grid, waves (inline data URIs)
  • Dark Mode First - System preference detection + manual toggle
  • Accessibility - WCAG AA contrast, focus states, keyboard navigation
  • Zero Config - Works out of the box, optional customization

🎨 Brand System & Customization

🌈 JaZeR Neon Theme

Built-in cyberpunk color palette with 10 carefully crafted colors:

Color Hex Purpose
🟣 Electric Purple #8B5CF6 Primary brand, headings, CTAs
πŸ”΅ Cosmic Blue #3B82F6 Links, interactive elements
🩷 Neon Pink #EC4899 Highlights, hover states
🟑 Sunburst Gold #F59E0B Warnings, attention
🩡 Aether Teal #06B6D4 Info states, accents
🟣 Ultraviolet #A78BFA Secondary highlights
⚫ Night Black #0B0E12 Dark backgrounds
βšͺ Stardust White #F8F9FF Light text
⬛ Graphite #1F2937 Cards, panels
πŸ”˜ Soft Slate #94A3B8 Borders, disabled states

🎭 Logo Color Extraction

Upload any logo image to automatically extract an 8-color theme using ColorThief's intelligent k-means clustering:

8 Auto-Generated Presets:

  1. Monochrome - Single dominant hue variations
  2. Contrast - High contrast pairs for readability
  3. Vibrant - Bright, energetic colors
  4. Professional - Muted, balanced tones
  5. Dark - Deep tones for dark mode
  6. Light - Bright tones for light mode
  7. Neon - High saturation cyberpunk glow
  8. Minimal - Subtle, understated palette

✨ Visual Effects

All widgets support:

  • πŸ’« Neon Glow - Text and border glows
  • 🌈 Gradients - Multi-color smooth transitions
  • 🌟 Glassmorphism - Backdrop blur and transparency
  • 🎨 Background Textures - Stars, noise, dots, grid, waves
  • πŸŒ“ Theme Switching - Automatic light/dark mode detection

🚒 Deployment

GitHub Pages (Automated CI/CD)

The repository includes automated deployment via GitHub Actions:

Trigger: Push to 'master' branch
Build: Node 20 β†’ npm ci β†’ npm run build
Deploy: dist/ β†’ GitHub Pages (gh-pages branch)
Live URL: https://jazer-444.github.io/notion-widget-builder/

Manual Deployment

πŸ“˜ GitHub Pages
# Using gh-pages package (recommended)
npm run deploy

# Manual deployment
npm run build
git add dist -f
git commit -m "Deploy to GitHub Pages"
git subtree push --prefix dist origin gh-pages
⚑ Vercel
npm i -g vercel
vercel --prod
🎨 Netlify

Option A: Drag & Drop

  1. Visit app.netlify.com/drop
  2. Run npm run build
  3. Drag dist/ folder

Option B: Git Integration

  • Build command: npm run build
  • Publish directory: dist
☁️ Cloudflare Pages
npm run build
npx wrangler pages deploy dist

πŸ“š Documentation

Core Documentation

Brand Theme System

Development


🀝 Contributing

Development Workflow

  1. Fork the repository
  2. Create feature branch (git checkout -b feature/amazing-widget)
  3. Follow brand guidelines (see BRAND_GUIDELINES.md)
  4. Test changes (npm run dev)
  5. Lint code (npm run lint)
  6. Commit (git commit -m "feat: Add amazing widget")
  7. Push (git push origin feature/amazing-widget)
  8. Open Pull Request

Adding New Widgets

Each widget follows a three-file pattern:

  1. src/widgets/widget-name/config.js - Schema & defaults
  2. src/widgets/widget-name/WidgetName.jsx - React preview
  3. src/widgets/widget-name/export.js - HTML generator

See CLAUDE.md for detailed instructions.

Code Standards

  • Naming: Hyphenated lowercase directories (clock-widget/)
  • Colors: Use jazerNeonTheme.colors.* constants
  • Modes: Support light/dark/system configurations
  • Exports: Zero dependencies except Google Fonts
  • Accessibility: WCAG AA contrast, focus states

πŸ’‘ FAQ

Can I use widgets outside of Notion?

Yes! Exported HTML files work anywhere - websites, blogs, apps. Embed via <iframe>.

Do widgets work offline?

Mostly yes. Only Google Fonts (Orbitron, Montserrat) load from CDN. Download fonts locally for full offline support.

Can I customize beyond the UI?

Absolutely! Download the HTML, edit inline styles/scripts, and re-host. Advanced users can modify source files directly.

How do I update a deployed widget?

Re-export from the builder, replace the hosted HTML file. Notion embeds auto-update (may need refresh).

Can I use custom brand colors?

Yes! Upload your logo to auto-extract 8 colors, or manually customize all colors via picker.

How do I report bugs?

Open a GitHub issue with description, reproduction steps, and screenshots.


πŸ“„ License

MIT License - Copyright (c) 2026 JaZeR

See LICENSE file for full details.


Mobile Icon

πŸš€ Ready to Build Amazing Widgets?

🌐 Launch Builder β€’ πŸ“– View Docs β€’ πŸ› Report Issue


Built with πŸ’œ using React + Vite | Powered by Modern Web Technologies

Transform your Notion workspace with beautiful, customizable widgets

About

Notion Widget Builder is a developer-oriented toolkit for creating reusable, embeddable widgets for Notion. The repository provides a structured system for building responsive, performance-optimized widgets using modern front-end patterns, enabling fast iteration, customization, and self-hosting.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages