FreeConnect is a modern, interactive Android communication app that lets people access virtual phone numbers, make and receive internet-based (VoIP) calls, and place calls to regular mobile and landline numbers through a compatible telecom provider. The product is built for a global, mobile-first, price-aware audience across South Asia, the Gulf, the United Kingdom and the United States โ people who need a reachable number in another country, who want to talk over Wi-Fi or mobile data, and who need to see real provider pricing and verification obligations before committing to a paid telecom service.
The product's defining intent is truthful telecom: it shows only numbers the selected provider can legally supply, labels every simulated call and message unmistakably, never invents real-world phone numbers, and never advertises real international calling as free unless the provider explicitly offers it for free. Users can explore the entire app without creating an account; an anonymous user ID is generated for the initial session and demo preferences are stored locally.
This document is the authoritative specification for the current delivery: the Android app, its backend API structure, demo mode, telecom integration interfaces, and the seven supported destinations โ India (+91), Pakistan (+92), Bangladesh (+880), the United Kingdom (+44), the United States (+1), Dubai/United Arab Emirates (+971), and Iran (+98).
FreeConnect is delivered as an Android application (Kotlin + Jetpack Compose) backed by a Node.js + TypeScript API service with a PostgreSQL database. Internet calling uses WebRTC or a compatible SIP/VoIP service; calls to ordinary phone numbers and inbound calls to provisioned virtual numbers route through a compatible PSTN/SIP telecom provider. Firebase Cloud Messaging delivers push notifications for incoming calls and messages. All telecom API credentials live on the backend and are never shipped inside the Android application.
Actors. The accepted active-human catalog is closed and consists of three personas: the Anonymous Explorer, the Virtual Number Subscriber, and the Caller. Non-human actors are the telecom provider (number inventory, PSTN/SIP routing, charges, verification mandates), Firebase Cloud Messaging (push delivery), and the Android native phone service (SIM-based cellular calls and emergency-call handling).
Accepted behavior. Users browse the seven supported countries with dialing codes and truthful provider availability; review per-country number details (available numbers, incoming/outgoing/SMS support, pricing, verification requirements, expiration); select, activate, manage, or release numbers (multiple numbers where the provider permits); place and receive app-to-app audio calls and calls to regular mobile and landline numbers; use the dial pad, contacts, call history, voicemail, call forwarding, call blocking, conference calling, and messaging where supported; and manage usage/credit, privacy and security settings, and dark/light mode. Demo mode provides demo numbers and clearly labeled simulated calls and messages.
Ownership. The application owns the user-facing surfaces listed in ยง2c. The telecom provider owns number inventory, legal supply confirmation, PSTN/SIP routing, charge amounts, and any identity-verification mandate. The Android native phone service owns SIM-based cellular calls and emergency-call handling. Firebase Cloud Messaging owns push delivery.
Narrow exclusions. FreeConnect does not generate fake real-world phone numbers or claim unsupported availability; does not promise number availability or SMS verification for WhatsApp or other third-party platforms; does not route emergency calls through an unsupported VoIP system; does not pretend that demo calls connect to real telephone networks; and does not advertise real international calling as free unless the provider explicitly offers it for free.
Delivery. The current delivery is the complete Android project with source code, UI components, backend API structure, demo mode, telecom integration interfaces, installation instructions, and a testing guide. The Android app is the primary client; the backend is the single shared service that holds telecom credentials, mediates provider calls, and persists durable state.
Access ownership. FreeConnect has no mandatory login. The Landing surface is anonymous and public. Home, the country selector, Keypad, Contacts, Messages, the incoming-call screen, the active-call screen, call history, the voicemail inbox, and Settings are reachable without an account. The virtual-number dashboard and the number-management page require an established identity because they bind durable, provider-committed state (an activated number, its charges, its expiration, and its verification obligations) to a specific person who must be able to resume and manage it. Account Recovery is the optional surface where a user chooses to protect that durable state; identity verification is required only when the provider or applicable law mandates it.
Current vs. future. Everything in ยง3 is current. No future-horizon requirements are asserted in the authoritative thread; anything not stated there is out of scope rather than deferred.
Not applicable โ no reference directive in this project declares content_source.
Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance.
FR-1 โ Explore without an account (explicit) As an Anonymous Explorer, I should be able to open FreeConnect and explore it without creating an account, so that I can understand the app before committing to anything.
FR-2 โ Anonymous user ID for the initial session (required_inference) As an Anonymous Explorer, I should receive an anonymous user ID for my initial session, so that my session state is coherent without an account.
FR-3 โ Local storage of demo preferences (required_inference) As an Anonymous Explorer, I should have my demo preferences stored locally, so that my exploration choices persist between sessions on the same device.
FR-4 โ Local-data-loss notice (required_inference) As an Anonymous Explorer, I should be told that reinstalling the app or clearing its data may remove locally stored anonymous settings, so that I understand the durability of my anonymous state.
FR-5 โ Optional secure backup and account recovery (required_inference) As an Anonymous Explorer, I should be able to optionally enable secure backup and account recovery, so that my durable state survives reinstall or data clearing.
FR-6 โ Identity verification only when mandated (explicit) As a Virtual Number Subscriber, I should be asked for identity verification only when the provider or applicable law mandates it, so that I am not burdened with unnecessary verification.
FR-7 โ Country availability display (explicit) As a Virtual Number Subscriber, I should see virtual number availability for India (+91), Pakistan (+92), Bangladesh (+880), the United Kingdom (+44), the United States (+1), Dubai/United Arab Emirates (+971), and Iran (+98), so that I know which destinations are offered.
FR-8 โ Truthful provider availability (explicit) As a Virtual Number Subscriber, I should see only numbers that the selected telecom provider can legally supply, and "Currently unavailable" where numbers for a country are unavailable, so that I am never misled.
FR-9 โ No fabricated real-world numbers (explicit) As a Virtual Number Subscriber, I should never be shown generated fake real-world phone numbers or unsupported availability claims, so that I can trust the inventory.
FR-10 โ Per-country number details (explicit) As a Virtual Number Subscriber, I should see, for each country, the available numbers from the provider and whether incoming calls, outgoing calls, and SMS are supported, so that I can judge fitness for my needs.
FR-11 โ Pricing, verification requirements, and expiration (explicit) As a Virtual Number Subscriber, I should see pricing, verification requirements, and number expiration for virtual numbers, so that I understand the cost and obligations before committing.
FR-12 โ Select, activate, manage, or release numbers (explicit) As a Virtual Number Subscriber, I should be able to select, activate, manage, or release virtual numbers, so that I control which numbers I hold.
FR-13 โ Multiple numbers where permitted (explicit) As a Virtual Number Subscriber, I should be able to hold multiple virtual numbers if the provider permits it, so that I can serve several destinations.
FR-14 โ Provider charges before activation (explicit) As a Virtual Number Subscriber, I should see the actual provider charges before I activate a paid telecom service, so that I consent to the real cost.
FR-15 โ No WhatsApp or third-party platform promises (explicit) As a Virtual Number Subscriber, I should not be promised number availability or SMS verification for WhatsApp or other third-party platforms, so that I am not misled about third-party support.
FR-16 โ Internet-based voice calls over Wi-Fi or mobile data (explicit) As a Caller, I should be able to make and receive voice calls over Wi-Fi or mobile data, so that I can talk without cellular minutes.
FR-17 โ App-to-app audio calls (explicit) As a Caller, I should be able to make app-to-app audio calls, so that I can talk to other FreeConnect users directly.
FR-18 โ Interactive dial pad and contact list (explicit) As a Caller, I should have an interactive dial pad and a contact list, so that I can place calls quickly.
FR-19 โ Incoming-call notifications and call history (explicit) As a Caller, I should receive incoming-call notifications and have a call history, so that I do not miss calls and can review them.
FR-20 โ Mute, speaker, hold, and end-call controls (explicit) As a Caller, I should have mute, speaker, hold, and end-call controls during a call, so that I can manage the conversation.
FR-21 โ WebRTC or compatible SIP/VoIP service (explicit) As a Caller, I should have internet calling delivered through WebRTC or a compatible SIP/VoIP service, so that the calling path is a real, supported VoIP implementation.
FR-22 โ Background calls and reconnection (explicit) As a Caller, I should have background calls and reconnection after network interruptions, so that a call survives leaving the app or a brief network drop.
FR-23 โ Call regular mobile and landline numbers (explicit) As a Caller, I should be able to call regular mobile and landline numbers, so that I can reach people who are not on FreeConnect.
FR-24 โ International dialing codes and number validation (explicit) As a Caller, I should have international dialing code support and number validation, so that I dial correctly across countries.
FR-25 โ Incoming calls to provisioned virtual numbers (explicit) As a Virtual Number Subscriber, I should receive incoming calls to my provisioned virtual numbers, so that my numbers are genuinely reachable.
FR-26 โ PSTN/SIP routing (explicit) As a Caller, I should have calls routed through a compatible PSTN/SIP telecom provider, so that regular phone numbers are reachable.
FR-27 โ Call duration, status, and applicable charges (explicit) As a Caller, I should see call duration, call status, and applicable charges, so that I know what the call costs and how it is progressing.
FR-28 โ Emergency-call handling through the native phone service (explicit) As a Caller, I should have emergency calls handled through the appropriate native phone service, so that emergency calls are never routed through an unsupported VoIP system.
FR-29 โ Normal cellular calls use the device SIM and Android phone services (explicit) As a Caller, I should have normal cellular calls use the device's SIM and Android phone services, so that ordinary cellular calling behaves natively.
FR-30 โ SMS and messaging where supported (explicit) As a Caller, I should be able to send and receive SMS and messages where supported, so that I can message from my virtual numbers.
FR-31 โ Voicemail (explicit) As a Caller, I should have voicemail, so that callers can leave messages when I do not answer.
FR-32 โ Call forwarding (explicit) As a Caller, I should have call forwarding, so that calls to my numbers can be directed elsewhere.
FR-33 โ Call blocking (explicit) As a Caller, I should have call blocking, so that I can stop unwanted callers.
FR-34 โ Conference calling (explicit) As a Caller, I should have conference calling, so that I can talk with more than one participant.
FR-35 โ Contacts and call history (explicit) As a Caller, I should have contacts and call history, so that I can reach people and review past calls.
FR-36 โ Dark mode and light mode (explicit) As a Caller, I should have dark mode and light mode, so that the app is comfortable in any lighting.
FR-37 โ Push notifications for incoming calls and messages (explicit) As a Caller, I should receive push notifications for incoming calls and messages, so that I am alerted when the app is not in the foreground.
FR-38 โ Usage and credit dashboard (explicit) As a Virtual Number Subscriber, I should have a usage and credit dashboard, so that I can track my balance and consumption.
FR-39 โ Privacy and security settings (explicit) As a Virtual Number Subscriber, I should have privacy and security settings, so that I can control my data and account protection.
FR-40 โ Demo numbers and simulated calls (explicit) As an Anonymous Explorer, I should have demo numbers and simulated calls, so that I can explore the app's calling experience without a paid telecom service.
FR-41 โ Clear labeling of simulated calls and messages (explicit) As an Anonymous Explorer, I should have simulated calls and messages clearly labeled, so that I never mistake them for real connections.
FR-42 โ Demo calls do not pretend to connect to real networks (explicit) As an Anonymous Explorer, I should never be led to believe that demo calls connect to real telephone networks, so that my expectations stay accurate.
FR-43 โ No free-international-calling claim (explicit) As a Virtual Number Subscriber, I should not see real international calling advertised as free unless the provider explicitly offers it for free, so that pricing expectations are honest.
FR-44 โ Telecom API credentials on the backend (explicit) As a Virtual Number Subscriber, I should have telecom API credentials kept on the backend and never in the Android application, so that provider access is not exposed on the device.
FR-45 โ Bottom navigation (explicit) As a Caller, I should have bottom navigation with Home, Keypad, Contacts, Messages, and Settings, so that I can move between the main areas quickly.
FR-46 โ Complete deliverables (explicit) As a Virtual Number Subscriber, I should receive the complete Android project, source code, UI components, backend API structure, demo mode, telecom integration interfaces, installation instructions, and testing guide, so that the product can be built, run, and verified.
Product context. The Anonymous Explorer opens FreeConnect for the first time with no account and no commitment. They may have heard about virtual numbers and want to understand what the app actually offers before spending anything. They are the persona the no-mandatory-login constraint exists for.
Primary goal. Understand FreeConnect's virtual-number and calling capabilities without creating an account, and explore demo numbers and simulated calls safely.
Distinct accepted responsibilities. Entering the app anonymously; receiving an anonymous user ID for the initial session; storing demo preferences locally; exploring demo numbers and simulated calls; reading the local-data-loss notice; optionally enabling secure backup and account recovery.
Relevant inputs or decisions. Whether to enter the app; which country to browse; whether to try a demo call; whether to enable optional backup; whether to accept that clearing data removes locally stored anonymous settings.
Interactions with other accepted participants. The Anonymous Explorer interacts with the telecom provider only indirectly (availability and pricing are provider-supplied); with Firebase Cloud Messaging for push notifications; and with the Android native phone service only if they dial an emergency number. They may later become a Virtual Number Subscriber or Caller.
Observable success. The app opens without an account, an anonymous user ID exists for the session, demo preferences persist locally, simulated calls and messages are unmistakably labeled, and the local-data-loss notice is understood.
What makes this role different. The Anonymous Explorer's work is evaluation without commitment: every action must be possible with zero identity, and the app must be honest that anonymous state is local and fragile. This is a different job from holding a number or completing a call.
Product context. The Virtual Number Subscriber wants a reachable number in one or more of the seven supported countries. They care about whether the number can receive calls, make calls, and handle SMS, what it costs, what verification is required, and when it expires. They are price-aware and expect to see real provider charges before committing.
Primary goal. Hold working virtual numbers with clear provider charges and verification obligations.
Distinct accepted responsibilities. Browsing country availability for India, Pakistan, Bangladesh, the UK, the USA, Dubai/UAE, and Iran; reviewing dialing codes, provider-supplied numbers, incoming/outgoing/SMS support, pricing, verification requirements, and expiration; selecting, activating, managing, or releasing numbers; holding multiple numbers where the provider permits; completing identity verification only when mandated; reviewing the usage and credit dashboard; managing privacy and security settings.
Relevant inputs or decisions. Which country and number to choose; whether to accept the displayed provider charges; whether to complete mandated verification; whether to add another number; whether to release a number; whether to enable optional backup.
Interactions with other accepted participants. The Virtual Number Subscriber depends on the telecom provider for inventory, legal supply, charges, and verification mandates; on the backend for credential-safe provider mediation; and on the Caller persona's activity when their provisioned numbers receive inbound calls.
Observable success. Numbers are activated with the actual provider charges shown beforehand, capability flags and expiration are visible, mandated verification is completed only when required, and the usage and credit dashboard reflects consumption.
What makes this role different. The Virtual Number Subscriber's work is procurement and stewardship of a regulated asset: it is governed by provider legality, pricing, verification, and expiration in a way that neither anonymous exploration nor call handling is.
Product context. The Caller uses FreeConnect to actually talk to people โ app-to-app over the internet, or to regular mobile and landline numbers through the PSTN/SIP provider. They may be on Wi-Fi or mobile data, may move in and out of coverage, and need the call to survive that.
Primary goal. Complete calls with visible duration, status, and applicable charges, with emergency calls handled through the native phone service.
Distinct accepted responsibilities. Placing and receiving internet-based app-to-app audio calls; calling regular mobile and landline numbers; using the dial pad, contacts, and international dialing codes with number validation; managing mute, speaker, hold, and end-call controls; receiving incoming-call notifications; reviewing call history; using voicemail, call forwarding, call blocking, and conference calling; sending and receiving SMS and messages where supported; relying on background calls and reconnection; handing emergency calls to the native phone service.
Relevant inputs or decisions. Which number to dial; whether to call app-to-app or over PSTN; whether to answer, decline, or send to voicemail; whether to mute, hold, or add a participant; whether to block a caller; whether to call back from history.
Interactions with other accepted participants. The Caller interacts with the telecom provider for PSTN/SIP routing and charges; with Firebase Cloud Messaging for incoming-call and message notifications; with the Android native phone service for SIM-based cellular calls and emergency calls; and with the Virtual Number Subscriber's provisioned numbers when receiving inbound calls.
Observable success. Calls connect and show LIVE with duration counting up; applicable charges are visible; interruptions trigger reconnection; missed calls appear in history; voicemail is reachable; emergency calls go to the native phone service.
What makes this role different. The Caller's work is real-time session management under network and regulatory constraints: the value is in the live call state, the controls, and the honest charge readout, not in inventory or exploration.
Muse and headline. The visual direction is Cinematic future-comms โ a glowing globe of live lines, after Gleb Kuznetsov. The headline is "Your number, everywhere." The product's real subject matter โ signals travelling between countries โ is inherently luminous, dark, and three-dimensional, and dark mode is the product's own default request, so the dark ground is a product requirement rather than a stylistic imposition.
Dark mode (default) tokens
| Role | Hex | Use |
|---|---|---|
| Background | #070A14 | Deep navy-black ground |
| Surface | #0E1424 at 72% opacity | Raised glass panels |
| Text | #EAF2FF | Body and headings (~15:1 on #070A14) |
| Primary | #22D3EE | Instrument colour: active call state, live signal lines, focused dial key, connected status, primary CTA |
| Accent | #FF4FD8 | Reserved and hot: incoming-call ring, missed-call marker, "Simulated / Demo" badge, destructive Release-number action |
| Muted | #7C8BA8 | Metadata labels only, at 14px+ (passes 4.6:1 on the dark ground) |
Light mode (warm-paper inversion). Ground #F4F6FB, text #0B1020, same cyan #22D3EE and magenta #FF4FD8 accents, so the identity survives the theme switch.
Contrast rules. Never place #22D3EE text on #0E1424 at body size for long copy โ cyan is for short labels, numerals, and strokes. Muted #7C8BA8 is used only at 14px+ for labels.
Typography. Headings: Space Grotesk 500/700, tight โ0.02em tracking, sentence case for page titles, and ALL-CAPS 11px micro-labels at +0.18em tracking for HUD chrome ("ACTIVE NUMBER", "PER MIN", "PSTN ROUTE"). Headlines are large and wide-set, never centred as a stack of three lines. Body: IBM Plex Sans. Numerals (durations, tariffs, dial codes) always in IBM Plex Mono tabular. Scale: 1.25 modular on a 4px baseline โ display 44px mobile โ 96px desktop; h1 28/40; h2 20/26; body 15/16; micro-label 11; mono data 13.
Shape language. Thin 1px luminous strokes at 18% white and 40% cyan; panels with 20px radii and a 1px top-edge highlight to read as glass; dial pad keys are perfect circles at 64px with a soft inner glow on press; country rows are ruled horizontal bands, not cards. Circular gauges for credit balance and call duration. No blobs, no soft offset shadows โ depth comes from glow and blur, not from drop shadows.
Layout. Full-bleed dark canvas with a persistent bottom navigation dock (Home | Keypad | Contacts | Messages | Settings) rendered as a floating glass bar with a cyan live-indicator notch that slides to the active tab. Home is a country-routed number dashboard: a left column of ruled country rows (flag, name, +code, status pill) and a right column of floating glass panels for the active number, credit gauge, and recent calls. On mobile the columns stack and the country rows become horizontally scrollable chips that snap. Every row is a label/value pair on a visible baseline grid.
Imagery. No stock photography. The visual subject is a generative signal field: a dark globe of thin cyan arcs connecting the seven supported countries, with faint magenta arcs marking unavailable routes. Country rows carry circular flag glyphs and a small HUD capability strip (IN / OUT / SMS) drawn as three tiny labelled dots. Demo/simulated calls carry a magenta diagonal hatch band across the call card.
Readable text and controls. Headlines, wordmarks, labels, numbers, cards' text, and controls stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling (for example font-size: clamp(...) with its mobile size) to fit. No other element covers any part of them. Imagery, decoration, and motion may be cropped, bled off an edge, rotated, overlapped, or cut as the direction asks, as long as they cover no readable text or control.
The live wireframe globe hero. Home opens on a 100vh dark stage (#070A14). The dominant element is a slowly rotating wireframe globe built from layered 2D arcs (canvas/CSS-3D, not WebGL) with seven labelled nodes at India, Pakistan, Bangladesh, the UK, the US, UAE, and Iran. Cyan #22D3EE arcs pulse outward from the user's active number; faint magenta #FF4FD8 arcs mark unavailable routes. The globe bleeds off the right and top edges.
Over it, at the lower-left, an oversized Space Grotesk headline sits flush-left at 44px mobile โ 96px desktop reading "Your number, everywhere.", occupying roughly nine columns. A single cyan-outlined CTA "Get a number" is pinned directly beneath it, and a magenta "Demo mode โ simulated calls" pill sits above the headline. A glass status panel sits at the lower-right showing the active number in IBM Plex Mono, a credit gauge, and three HUD micro-labels. No text or control is ever overlapped by the globe.
The concept recomposes only accepted content, states, and controls: the seven supported countries, their dialing codes, provider availability, the active number, the credit balance, and the demo-mode disclosure. It introduces no new behavior, page, or destination.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: layered_2d
Landing Hero Motion Brief
cubic-bezier(0.22,1,0.36,1) ease; the incoming-call screen pulses the magenta ring at 1.4s. Nothing bounces.prefers-reduced-motion, leaving a static field and instant state changes. The globe renders as a still composed frame; the nav notch moves without animation; the incoming-call ring is a static magenta ring.NFR-1 โ HTTPS and secure transport (explicit) All clientโbackend communication uses HTTPS. Rationale: the source requires HTTPS for security.
NFR-2 โ Secure authentication tokens (explicit) Authentication tokens are handled securely, including for the anonymous session and for optional backup/recovery. Rationale: the source requires secure authentication tokens.
NFR-3 โ Encrypted sensitive data (explicit) Sensitive data is encrypted at rest and in transit. Rationale: the source requires encrypted sensitive data.
NFR-4 โ Abuse prevention (explicit) The system includes abuse prevention controls. Rationale: the source requires abuse prevention.
NFR-5 โ Telecom credentials on the backend only (explicit) Telecom API credentials are kept on the backend and never shipped in the Android application. Rationale: explicit source constraint.
NFR-6 โ Background calls and reconnection (explicit) Calls continue in the background and reconnect after network interruptions. Rationale: explicit source requirement.
NFR-7 โ Push notification delivery (explicit) Firebase Cloud Messaging delivers push notifications for incoming calls and messages. Rationale: explicit source technology choice.
NFR-8 โ Truthful availability and pricing (explicit) The system never generates fake real-world phone numbers, never claims unsupported availability, and never advertises real international calling as free unless the provider explicitly offers it for free. Rationale: explicit source constraints.
NFR-9 โ Emergency-call safety (explicit) Emergency calls are never routed through an unsupported VoIP system; they are handled through the appropriate native phone service. Rationale: explicit source constraint.
NFR-10 โ Readable text and controls at all viewports (required_inference) Headlines, labels, numbers, cards' text, and controls remain entirely inside the viewport and their container at 375px, 768px, and 1280px. Rationale: required for the accepted UI to be usable across the mobile-first audience.
NFR-11 โ Theme support (explicit) Dark mode and light mode are both supported, with dark mode as the product's default. Rationale: explicit source requirement plus the creative direction's dark ground.
Assumptions
Constraints
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!