DEV Community

Cover image for Show DEV: RingMasti, a free ringtone site with Next.js, nginx and a Flutter app
Satwinder Dev
Satwinder Dev

Posted on

Show DEV: RingMasti, a free ringtone site with Next.js, nginx and a Flutter app

I have been building RingMasti, a free ringtone site. This is a short introduction to what it is, how it is put together, and how I handle content. Feedback is welcome.

What it does

  • Browse ringtones and listen on the page first, then get the file as MP3 for Android or M4A for iPhone.
  • No sign-up and no account.
  • Clips are short (under a minute) and cut to the part people actually recognise, not the whole song.
  • Hindi, Punjabi, Tamil, Telugu, Malayalam and other regional music, plus BGM, instrumentals, devotional tones and notification sounds.
  • A ringtone cutter that trims your own audio file in the browser.
  • A name ringtone maker that turns a name into a custom tone.
  • An Android app (Flutter) on Google Play.

The stack

  • Frontend: Next.js 15 (App Router) with ISR, so popular ringtone pages are served from cache.
  • Files: a separate nginx + PHP host. PHP only checks access, and nginx sends the audio itself (X-Accel-Redirect), which keeps PHP workers free during traffic spikes.
  • Data: MariaDB.
  • Edge: Cloudflare in front of both.
  • Mobile: Flutter app using the same API.

How content is handled

Ringtones are added as short clips, and automated imports are capped each day so the catalogue grows steadily instead of in bulk. Anything longer than about a minute is rejected, so full songs do not end up on the site. If a rights holder asks for something to be removed, it is taken down and that URL returns 410 Gone. The site has a DMCA page and a contact page for this.

What I would like feedback on

  1. Is the listen-first flow clear on mobile?
  2. Does the M4A option for iPhone make sense, or would you expect something else?
  3. What would make the ringtone cutter more useful?

If you try it, tell me what felt slow or confusing.

Top comments (0)