Skip to content

ravalmahsee/crispy-octo-rotary-phone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“± Crispy Octo Rotary Phone

Retro Dialer β€’ Modern UI β€’ Offline-Ready

Hero Image


✨ Overview

Crispy Octo Rotary Phone is a fun, retro-inspired phone dialer built entirely with HTML, CSS, and JavaScript β€” no build tools, no frameworks.
Just open the file and enjoy:

  • βœ… Rotary Dial with realistic physics
  • βœ… Keypad mode with DTMF tones
  • βœ… Contacts manager
  • βœ… Call log history
  • βœ… Light/Dark/System themes
  • βœ… Haptics & Sound toggle
  • βœ… PWA support (Installable, Offline Capable)

🧭 Features β€” Everything in One Glance

🎑 Rotary Dial

  • Drag a number to the stopper
  • Release to dial
  • Authentic clicking sound pulses
  • Smooth and snappy animation

πŸ”’ Keypad + DTMF

  • Toggle to keypad mode
  • Real dual-tone DTMF synthesized with WebAudio
  • Perfect for UI/UX experiments

πŸ‘₯ Contacts

  • Add new contacts
  • Auto-fill numbers
  • Quick Call
  • Long-term storage via localStorage

πŸ“œ Call Log

  • Timestamped entries
  • Status: Dialed / Failed / Ended
  • Automatically recorded
  • Persistent

🎨 Themes

  • Dark (default)
  • Light
  • System Mode (auto detect OS theme)

πŸ”Š Sound & πŸ“³ Haptics

  • Toggle sound effects
  • Haptic feedback on supported devices

πŸ“¦ PWA (Installable App)

  • Install as standalone app
  • Offline ready (service worker + caching)
  • Clean manifest and icons included

πŸš€ Quick Start β€” Zero Fuss

Option 1: Run Locally

  1. Download the ZIP
  2. Extract
  3. Open index.html
  4. Done βœ…

Option 2: Install as App

  • Open in browser
  • Menu β†’ β€œInstall App”
  • Launch from home screen

πŸ“ How to Use

Rotary Mode

  1. Click/Touch a number hole
  2. Drag clockwise to the stopper
  3. Release
  4. Listen for click pulses
  5. Number appears on screen

Keypad Mode

  1. Tap digits directly
  2. Hear authentic DTMF tones
  3. Haptics (if enabled & supported)

Making a Call

  • Press Call
  • Phone rings 4 cycles
  • If no answer β†’ Busy tone
  • Press End to stop early

Contacts

  • Add contacts with β€œ+ Add Contact”
  • Press β€œCall” next to a contact
  • Auto-fills the number

Call Log

  • Every call you make is saved
  • Shows timestamp + call status

Settings Panel

  • Theme switch
  • Rotary/Keypad default mode
  • Toggle Sounds
  • Toggle Haptics

⌨️ Keyboard Shortcuts

Action Key
Dial digits 0–9, *, #
Call Enter
Delete Backspace
Clear number C

πŸ“ File Structure

root/
β”‚ index.html
β”‚ manifest.json
β”‚ service-worker.js
β”‚ README.md
β”‚
β”œβ”€β”€ css/
β”‚    └── style.css
β”‚
β”œβ”€β”€ js/
β”‚    β”œβ”€β”€ app.js        # Core rotary logic, call flow
β”‚    β”œβ”€β”€ ui.js         # UI logic, contacts, keypad, settings
β”‚    β”œβ”€β”€ dtmf.js       # DTMF generator
β”‚    └── state.js      # Persistence (localStorage)
β”‚
└── assets/
     β”œβ”€β”€ icons/        # PWA icons
     β”œβ”€β”€ images/       # README images (hero + preview)
     └── sounds/       # click.wav, ring.wav, busy.wav

🌐 Deployment

βœ… GitHub Pages

  1. Push this project to your repo
  2. Go to Settings β†’ Pages
  3. Select Main branch / Root
  4. Visit your project URL
  5. App caches itself automatically (offline mode)

βœ… Static Hosting

Works perfectly on:

  • Netlify
  • Vercel
  • Cloudflare Pages
  • Amazon S3
  • Any CDN / static host

πŸ§ͺ Browser Compatibility

  • Chrome βœ…
  • Firefox βœ…
  • Edge βœ…
  • Safari (iOS/macOS) βœ…

Some browsers block audio before first user interaction β€” expected behavior.


❓ FAQ

❔ Why a rotary phone?

Because it's fun, nostalgic, and oddly satisfying.

❔ Does this make real calls?

No β€” it’s UI/UX simulation only.

❔ Where is data stored?

Locally in localStorage.
No server, no tracking, no backend.


🀝 Contributing

Ideas & PRs welcome!

  • Speed-dial favorites
  • Animated call waveform
  • Custom sound packs
  • More themes

πŸ“œ License

MIT License β€” use, modify, remix freely.


Built with ❀️ β€” because rotating a dial is surprisingly therapeutic.

About

Lightweight rotary phone simulation made for practice and creativity.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published