<div class="dp-hero"> <img class="dp-logo" src="https://publish-01.obsidian.md/access/e00c10aa9141aa883f8c50e2e44a9276/_images/phlip-logo.png" alt="Phlip — self-hosted, events-first group planner"> <div class="dp-kicker">Your device · Your data</div> <h1 class="dp-title">Your <span class="hl">old phone</span> is your group's new home.</h1> <p class="dp-sub">Phlip turns any Android phone into your group's private server for social planning with members on iOS, Android or just a browser. Also works for personal use that keeps your data on your device.<br><b>No ads, no subscriptions, no data sold to third parties.</b></p> </div> <div align="center"> <span class="dp-store"><svg viewBox="0 0 512 512" aria-hidden="true"><path d="M325.3 234.3 104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5 18-46.5s-1.1-8.2-19.2-14.3zm-291.7 254 280.8-161.2-60.1-60.1-220.7 221.3z"/></svg><span class="s"><small>Coming soon</small><b>Google Play</b></span></span> <span class="dp-store"><svg viewBox="0 0 384 512" aria-hidden="true"><path d="M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"/></svg><span class="s"><small>Coming soon</small><b>App Store</b></span></span> </div> <div class="dp-showcase" data-demo="flick"> <div class="dp-stage"> <div class="dp-captions"> <div class="dp-caption on" data-phase="create"> <h3>Create an event with just a flick</h3> </div> <div class="dp-caption" data-phase="rsvp"> <h3>RSVP with one flick</h3> </div> <div class="dp-caption" data-phase="react"> <h3>React to the plan</h3> </div> <div class="dp-caption" data-phase="done"> <h3>Your phone. Your plans.</h3> </div> </div> <div class="dp-phone-scene"> <div class="dp-phone"> <div class="dp-screen"> <div class="dp-track"> <div class="dp-slide"> <div class="mock-bar">Friends · This Week</div> <div class="mock-body mock-flow" data-demo="flick"> <div class="ev-card ev-target"> <div class="ev-day"><span class="ev-pop">🎬</span><span class="ev-dow">THU</span></div> <div class="ev-main"> <div class="ev-title">Movie</div> <div class="ev-sub"><b>20:00</b> · Sam's</div> <div class="ev-footer"> <div class="ev-att"> <span class="att a1" data-react="🔥"></span> <span class="att a2" data-react="🎬"></span> <span class="att you" data-react="🔥"></span> </div> <span class="ev-host h-sam" title="Host"></span> </div> </div> <span class="ev-check">✓</span> <div class="ev-flickhint">Flick ↑</div> </div> <div class="ev-slot ev-landing"> <div class="slot-empty"> <span class="slot-dow">Tue</span> <span class="slot-line" aria-hidden="true"></span> <span class="slot-when">Evening</span> </div> <div class="ev-card slot-full"> <div class="ev-day"><span class="ev-pop">🎉</span><span class="ev-dow">TUE</span></div> <div class="ev-main"> <div class="ev-title">Party</div> <div class="ev-sub"><b>Evening</b> · My House</div> <div class="ev-footer"> <div class="ev-att party-att"> <span class="att p1" style="--i:0" data-react="🎉"></span> <span class="att p2" style="--i:1" data-react="🔥"></span> </div> <span class="ev-host you" title="Host"></span> </div> </div> <span class="ev-check ev-check-host">✓</span> </div> </div> <div class="mock-hand fan"> <div class="mock-trail"></div> <div class="opt-card c1"><span>📍</span></div> <div class="opt-card c2"><span>🔁</span></div> <div class="opt-card c3"><span>🙂</span></div> <div class="opt-card c4"><span>✕</span></div> <div class="mock-flick day flick-create"><span class="ev-pop">🎉</span><span class="ev-dow">TUE</span></div> <span class="flick-me-hint">Flick ↑</span> <div class="mock-flick going flick-respond"><span class="ev-pop">✓</span><span class="ev-dow">GO</span></div> <div class="mock-flick react flick-react"><span class="ev-pop">🔥</span></div> <div class="mock-sending label-create">creating…</div> <div class="mock-sending label-respond">going…</div> <div class="mock-sending label-react">reacting…</div> </div> </div> <div class="mock-splash" aria-hidden="true"> <img class="splash-logo" src="https://publish-01.obsidian.md/access/e00c10aa9141aa883f8c50e2e44a9276/_images/phlip-logo.png" alt=""> <div class="splash-kicker">Your device · Your data</div> <div class="splash-title">Phlip the script.</div> <div class="splash-sub">Self-hosted group planning</div> <div class="splash-replay">Tap to replay</div> </div> </div> </div> </div> </div> </div> <div class="dp-dots"></div> </div> </div> --- ## Why Phlip? <div class="dp-grid"> <div class="dp-ticket"> <div class="dp-flip"> <div class="dp-face dp-back"></div> <div class="dp-face dp-front"> <div class="dp-label">Your device, your data</div> <div class="dp-art" aria-hidden="true"><div class="dp-mock"><div class="mock-ticket hot"><div class="t">🔒 Personal</div><div class="d">ON YOUR DEVICE</div></div><div class="mock-ticket"><div class="t">📶 Local</div><div class="d">FRIENDS ON WI-FI</div></div><div class="mock-ticket"><div class="t">🌍 Public</div><div class="d">VIA CLOUDFLARE</div></div></div><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="2" width="14" height="20" rx="2.5"/><path d="M11 18h2"/></svg></div> <h3>Hosted on your hardware, accessible anywhere</h3> <p>Your group's data lives on a phone you own, not on company servers. No ads, no accounts with us, no data sold to third parties.</p> </div> </div> </div> <div class="dp-ticket"> <div class="dp-flip"> <div class="dp-face dp-back"></div> <div class="dp-face dp-front"> <div class="dp-label">Not a calendar</div> <div class="dp-art" aria-hidden="true"><div class="dp-mock dp-mock-flick"><div class="mock-ticket hot"><div class="t">🎉 Party</div><div class="d">TUE · EVENING</div></div><div class="dp-flickhint">↑ flick a card to create</div><div class="dp-hand"><span class="dp-hcard">🎬</span><span class="dp-hcard up">🎉</span><span class="dp-hcard">🍽️</span><span class="dp-hcard">⚽</span></div></div><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M15 14c.2-1 .7-1.7 1.5-2.5C17.7 10.2 18 9 18 7.5a6 6 0 0 0-12 0c0 1.5.3 2.7 1.5 4C8.3 12.3 8.8 13 9 14"/><path d="M9 18h6"/><path d="M10 22h4"/></svg></div> <h3>Make plans in seconds, not shared calendars</h3> <p>Calendars demand a time, a place and a commitment up front but plans rarely start that way. A pitch only needs a spark: throw the idea in, let the group get behind it, and lock the details once it's real.</p> </div> </div> </div> <div class="dp-ticket"> <div class="dp-flip"> <div class="dp-face dp-back"></div> <div class="dp-face dp-front"> <div class="dp-label">Events first</div> <div class="dp-art" aria-hidden="true"><div class="dp-mock dp-mock-chat"><div class="mock-msg"><b>Sam</b><a class="dp-mention">@Jo</a> free for <a class="dp-evlink"># Film night</a> thu?</div><div class="mock-msg me">yes! and <a class="dp-evlink"># 5-a-side</a> sat?</div><div class="mock-msg"><b>Priya</b>moved <a class="dp-evlink"># Mum's bday</a> to sun</div></div><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2 2 7l10 5 10-5-10-5Z"/><path d="m2 17 10 5 10-5"/><path d="m2 12 10 5 10-5"/></svg></div> <h3>Events first, chat with purpose</h3> <p>Pitch plans in seconds with cards, lock them in with one-tap RSVPs and live attendee lists. Chat supports the plan, not the other way round.</p> </div> </div> </div> <div class="dp-ticket"> <div class="dp-flip"> <div class="dp-face dp-back"></div> <div class="dp-face dp-front"> <div class="dp-label">All groups in one place</div> <div class="dp-art" aria-hidden="true"><div class="dp-mock dp-mock-rail"><div class="dp-rail"><span class="dp-chip on">P</span><span class="dp-chip">RR</span><span class="dp-chip">SL</span><span class="dp-chip add">+</span></div><div class="dp-railmenu"><div class="dp-mhead">Personal</div><div class="dp-mi on">Events <b>3</b></div><div class="dp-mi">Upcoming <b>4</b></div><div class="dp-mi">Hosting <b>2</b></div><div class="dp-mi">Open Pitch</div><div class="dp-msec">RR</div><div class="dp-mi sub"># plans</div><div class="dp-mi sub"># general</div><div class="dp-msec">SL</div><div class="dp-mi sub"># weekend</div></div></div><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/></svg></div> <h3>Distinct groups - consolidated personal view</h3> <p>Run a set of social groups side by side - each with its own events, members and channels - while a Personal space consolidates every plan you're in for your own diary. Personal, local or public.</p> </div> </div> </div> <div class="dp-ticket"> <div class="dp-flip"> <div class="dp-face dp-back"></div> <div class="dp-face dp-front"> <div class="dp-label">No sign-up needed</div> <div class="dp-art" aria-hidden="true"><div class="dp-mock dp-mock-broadcast"><div class="dp-url">🔗 phlipapp.com/e/7Q2X</div><div class="mock-ticket hot"><div class="t">🎬 Film night</div><div class="d">THU · 20:00 · SAM'S</div></div><div class="dp-names"><span>Sam</span><span>Jo</span><span>Ada</span><span>Priya</span><span>Max</span><span class="more">+9</span></div><div class="dp-rx"><span>🔥 6</span><span>🎉 5</span><span>😄 4</span></div></div><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="2"/><path d="M7.8 7.8a6 6 0 0 0 0 8.4"/><path d="M16.2 16.2a6 6 0 0 0 0-8.4"/><path d="M4.9 4.9a10 10 0 0 0 0 14.2"/><path d="M19.1 19.1a10 10 0 0 0 0-14.2"/></svg></div> <h3>Broadcast an event - share with anyone</h3> <p>Share a single event as a self-contained link anyone can open and RSVP to - no account, no joining a server. It shuts itself down once the event is over.</p> </div> </div> </div> <div class="dp-ticket"> <div class="dp-flip"> <div class="dp-face dp-back"></div> <div class="dp-face dp-front"> <div class="dp-label">Private by design</div> <div class="dp-art" aria-hidden="true"><div class="dp-mock dp-mock-draw"><div class="dp-pad"><span class="dp-pad-label">Draw a reaction</span><svg class="dp-scribble" viewBox="0 0 80 64" fill="none" stroke="var(--dp-blue)" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round"><path class="dp-stroke-face" d="M14 32c1-14 12-24 26-24s25 10 26 24"/><path class="dp-stroke-face" d="M14 32c1 14 12 24 26 24s25-10 26-24"/><path class="dp-stroke-eye" d="M28 26c0.4-1.2 1.6-2 3-1.8"/><path class="dp-stroke-eye" d="M48 26c0.4-1.2 1.6-2 3-1.8"/><path class="dp-stroke-smile" d="M30 40c3.5 5 16 5.5 21-1"/></svg><div class="dp-tools"><span class="dp-swatch on" style="background:var(--dp-blue)"></span><span class="dp-swatch" style="background:#e0574f"></span><span class="dp-swatch" style="background:#3d9a5f"></span><span class="dp-swatch" style="background:#caa24b"></span></div></div></div><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z"/></svg></div> <h3>Safety by design - limited image sharing</h3> <p>Small design choices keep everyone safer. Phlip is photo-free by design: instead of uploading images, you draw your own reactions. Fewer images to moderate helps hosts whilst giving your members a unique and fun way to express themselves!</p> </div> </div> </div> </div> --- ## Who it's for One app, however your group works - from the people you live with to a public event sign-up. - **Your own private diary:** use Phlip entirely on your own device: a personal planning space that works offline. Flick cards to plan your week; no server, no account, nothing leaves the phone. Groups can come later. - **The household hub:** shared plans for the people you live with, or the wider family. Meals, lifts, visits and birthdays on one calendar, hosted locally on a phone at home. - **The group that meets up:** pitch nights out, trips and film nights as cards, and let Open Pitch settle "I don't mind, you choose". Everyone RSVPs live, so plans survive the group chat. - **Sessions that stick:** line up revision sessions, deadlines and meetups on a shared timeline. Chat stays tied to each session, so nothing important scrolls away. - **Clubs, teams and neighbours:** run a five-a-side, a book club or a residents' group from one host phone. Roles and a member directory keep it organised, with public access when you need it. - **Open events, no sign-up:** putting on a one-off for a wider crowd (a gig, a meetup, a fundraiser)? **Broadcast** it as a link anyone can open and RSVP to: no account, no server to join, and it closes itself when it's over. --- ## How it works 1. **One person hosts - on a phone.** Install Phlip on any Android phone (the spare in the drawer, or the one in your pocket), tap Host. Public access is one toggle, tunnelled through Cloudflare from inside the app. See [[Guides/4. Host a server on your Android phone|hosting]] and [[Guides/5. Go public with Cloudflare|going public]]. 2. **Everyone else joins with a code.** Share a join code like <span class="dp-serial">9F2K4X</span> - members pick a name and their own password, and the host approves who stays. App or browser. See [[Guides/3. Join a server]]. 3. **Pitch, decide, show up.** Flick cards onto the timeline, run an [[Guides/6. Run an Open Pitch|Open Pitch]] when the group can't choose, and watch RSVPs land live. --- ## Honest by design Phlip is upfront about its boundaries and limitations. As a host you are responsible and liable for your servers but we make design choices that reduce risks part of the app's features. For example, we made Phlip photo-free by design. Chat does not allow images and even your user's profile pictures do not get stored on the host device. A profile photo is only shown when that user is online and able to share the photo themselves and we've used this to act as the indicator for their online/offline status. Encryption is a work in progress, not a finished feature. We encrypt message and event content where we can, but it is still under development and not fully implemented - some metadata isn't covered yet, and it needs more specialist security work before anyone should rely on it. The current boundary is spelled out in the [[FAQs]] - please don't use Phlip for anything sensitive in the meantime. What we are offering today is **a platform that doesn't collect your data for advertisements** or selling to third parties. Please note, Phlip is built by a solo developer as a side project in alpha - expect bugs and issues and use at your discretion. The full picture is on the [[Roadmap]] and in the [[FAQs]]. **Quicklinks:** [[About]] · [[Features]] · [[FAQs]] · [[Notices/Security]] · [[Roadmap]] · [[Guides/1. Start here|All guides]] · [[Notices/Legal]] <div class="dp-footer">Phlip · a social planner hosted by your old phone</div>