{
  "name": "App Front",
  "url": "https://appfront.cc/",
  "description": "Clear and candid: installable web apps, with every cost and catch up front: what they cost, whether they show ads, whether you need an account, whether they work offline and where your data goes.",
  "about": {
    "apps": "Installable web apps (PWAs): open them from a link in any browser and add them to the home screen. No app store, no store account.",
    "tones": "Each fact and each part of the tag has a tone: \"good\" (good for you), \"mixed\" (worth knowing) or \"heads-up\" (think it over). A part takes the least good tone of its facts.",
    "checked": "Each tag is checked against the app itself, on the date in \"checked\".",
    "labels": "https://appfront.cc/labels"
  },
  "updated": "2026-11-09",
  "apps": [
    {
      "id": "codequest",
      "name": "CodeQuest",
      "tagline": "Learn Python and SQL in your browser, one short quest at a time.",
      "category": "Education",
      "status": "live",
      "url": "https://codequest.appfront.cc/",
      "page": "https://appfront.cc/apps/codequest",
      "icon": "https://appfront.cc/apps/codequest.png",
      "maker": "Ubuntu Apps",
      "description": "CodeQuest teaches programming through quests: short stages with hands-on challenges, each ending in a quick quiz that opens the next one. Your code runs on your own device, so it works on locked-down school and work computers too.\n\nIt is made for phones as well as laptops, with a code editor that has extra keys for brackets, quotes and indents.",
      "features": [
        "Python and SQL courses, from first steps to small projects",
        "Challenges that check your code and show exactly what was different",
        "XP, ranks, daily streaks and badges",
        "Download quests to learn on a plane or train",
        "A certificate for each quest you finish"
      ],
      "tasks": [
        {
          "text": "Learn Python from scratch, in your browser",
          "link": "https://appfront.cc/apps/codequest#learn-python-from-scratch-in-your-browser"
        },
        {
          "text": "Learn SQL and practise writing queries",
          "link": "https://appfront.cc/apps/codequest#learn-sql-and-practise-writing-queries"
        },
        {
          "text": "Learn to code on your phone or tablet",
          "link": "https://appfront.cc/apps/codequest#learn-to-code-on-your-phone-or-tablet"
        },
        {
          "text": "Learn to code offline, on a plane or a train",
          "link": "https://appfront.cc/apps/codequest#learn-to-code-offline-on-a-plane-or-a-train"
        },
        {
          "text": "Practise coding on a school or work computer where you can't install anything",
          "link": "https://appfront.cc/apps/codequest#practise-coding-on-a-school-or-work-computer-where-you-cant-install-anything"
        },
        {
          "text": "Get a certificate for each part of a course you finish",
          "link": "https://appfront.cc/apps/codequest#get-a-certificate-for-each-part-of-a-course-you-finish"
        }
      ],
      "deal": [
        {
          "id": "cost",
          "name": "Cost",
          "question": "What will it cost me?",
          "tone": "good",
          "summary": "Free, no ads",
          "facts": [
            {
              "id": "price",
              "name": "Price",
              "answer": "Free",
              "meaning": "Free to use, with nothing to buy.",
              "tone": "good",
              "note": "Free, with no paywall"
            },
            {
              "id": "ads",
              "name": "Ads",
              "answer": "No ads",
              "meaning": "No adverts, anywhere.",
              "tone": "good"
            }
          ]
        },
        {
          "id": "convenience",
          "name": "Convenience",
          "question": "How easy is it to start, and to keep using?",
          "tone": "good",
          "summary": "No account, works offline",
          "facts": [
            {
              "id": "install",
              "name": "Install",
              "answer": "From a link",
              "meaning": "Open it from a link and add it to your home screen. No app store, no store account.",
              "tone": "good"
            },
            {
              "id": "devices",
              "name": "Works on",
              "answer": "Phone, tablet and computer",
              "meaning": "The same app on any phone, tablet or computer, with nothing else to buy or install.",
              "tone": "good"
            },
            {
              "id": "account",
              "name": "Account",
              "answer": "No account",
              "meaning": "No sign-up. Open it and start.",
              "tone": "good"
            },
            {
              "id": "offline",
              "name": "Offline",
              "answer": "Works offline",
              "meaning": "Once installed, it works with no internet connection.",
              "tone": "good",
              "note": "Install it and download the quests you want."
            },
            {
              "id": "updates",
              "name": "Updates",
              "answer": "Updates itself, with your OK",
              "meaning": "New versions arrive on their own, and switch over when you say, so nothing changes mid-task.",
              "tone": "good"
            }
          ]
        },
        {
          "id": "privacy",
          "name": "Privacy",
          "question": "Who sees what I put in, and can I take it back?",
          "tone": "good",
          "summary": "Stays on your device",
          "facts": [
            {
              "id": "data",
              "name": "Your data",
              "answer": "Stays on your device",
              "meaning": "What you put in is kept on your phone or computer and never sent anywhere.",
              "tone": "good",
              "note": "Your progress is saved in your browser."
            },
            {
              "id": "tracking",
              "name": "Tracking",
              "answer": "Anonymous counts",
              "meaning": "Sends counts that can't be tied to you, with no cookies.",
              "tone": "good",
              "note": "Counts like \"someone cleared the Variables gate\", with no cookies. You can turn them off in Settings."
            },
            {
              "id": "asks",
              "name": "Asks for",
              "answer": "Nothing",
              "meaning": "Doesn't ask to use anything on your device.",
              "tone": "good"
            },
            {
              "id": "export",
              "name": "Leaving",
              "answer": "Take it with you",
              "meaning": "You can download what you put in, and leave whenever you like.",
              "tone": "good",
              "note": "Save a backup of your progress, and restore it in any browser."
            }
          ]
        },
        {
          "id": "footprint",
          "name": "Footprint",
          "question": "What does it take from my device?",
          "tone": "mixed",
          "summary": "About 1 MB",
          "facts": [
            {
              "id": "download",
              "name": "Download",
              "answer": "About 1 MB",
              "meaning": "A small download: seconds, even on a phone connection.",
              "tone": "good",
              "note": "A language runtime the first time you run code in it: Python is about 10 MB."
            },
            {
              "id": "storage",
              "name": "Space",
              "answer": "Grows as you use it",
              "meaning": "Starts small and keeps more as you choose to use it offline.",
              "tone": "mixed",
              "note": "Grows as you download quests and languages to use offline."
            }
          ]
        }
      ],
      "priceDetails": [],
      "checked": "2026-11-09"
    },
    {
      "id": "safe-and-signed",
      "name": "Safe and Signed",
      "tagline": "Send a PDF for signature. Clients sign free on any phone.",
      "category": "Business",
      "status": "live",
      "url": "https://safeandsigned.appfront.cc/",
      "page": "https://appfront.cc/apps/safe-and-signed",
      "icon": "https://appfront.cc/apps/safe-and-signed.png",
      "maker": "Ubuntu Apps",
      "description": "Safe and Signed is a simple, private way to get documents signed. You upload a PDF, place the signature fields and send a link. Your client opens it on any phone, signs, and you both get the signed copy.\n\nDocuments are locked in your browser before they are uploaded, so its servers only ever hold files they can't read. Every completed document carries a standard PDF seal that shows it hasn't been changed since.",
      "features": [
        "Clients sign free, with no account",
        "End-to-end encrypted documents",
        "Optional access code and email codes for signers",
        "A sealed, tamper-evident PDF and a full history",
        "Ready-made sample agreements to start from"
      ],
      "tasks": [
        {
          "text": "Get a contract or agreement signed online",
          "link": "https://appfront.cc/apps/safe-and-signed#get-a-contract-or-agreement-signed-online"
        },
        {
          "text": "Send a PDF for e-signature, with no account needed to sign",
          "link": "https://appfront.cc/apps/safe-and-signed#send-a-pdf-for-e-signature-with-no-account-needed-to-sign"
        },
        {
          "text": "Let a client sign a document on their phone",
          "link": "https://appfront.cc/apps/safe-and-signed#let-a-client-sign-a-document-on-their-phone"
        },
        {
          "text": "Keep confidential documents encrypted while they are being signed",
          "link": "https://appfront.cc/apps/safe-and-signed#keep-confidential-documents-encrypted-while-they-are-being-signed"
        },
        {
          "text": "Show that a signed PDF hasn't been changed since it was signed",
          "link": "https://appfront.cc/apps/safe-and-signed#show-that-a-signed-pdf-hasnt-been-changed-since-it-was-signed"
        },
        {
          "text": "Protect a document with an access code before anyone can sign it",
          "link": "https://appfront.cc/apps/safe-and-signed#protect-a-document-with-an-access-code-before-anyone-can-sign-it"
        },
        {
          "text": "Start from a sample agreement instead of a blank page",
          "link": "https://appfront.cc/apps/safe-and-signed#start-from-a-sample-agreement-instead-of-a-blank-page"
        }
      ],
      "deal": [
        {
          "id": "cost",
          "name": "Cost",
          "question": "What will it cost me?",
          "tone": "good",
          "summary": "Pay as you go, no ads",
          "facts": [
            {
              "id": "price",
              "name": "Price",
              "answer": "Pay as you go",
              "meaning": "You pay only for what you use, usually with credit you top up.",
              "tone": "good",
              "note": "First 10 documents free, then from $0.20 each"
            },
            {
              "id": "ads",
              "name": "Ads",
              "answer": "No ads",
              "meaning": "No adverts, anywhere.",
              "tone": "good"
            }
          ]
        },
        {
          "id": "convenience",
          "name": "Convenience",
          "question": "How easy is it to start, and to keep using?",
          "tone": "mixed",
          "summary": "Account for some, needs internet",
          "facts": [
            {
              "id": "install",
              "name": "Install",
              "answer": "From a link",
              "meaning": "Open it from a link and add it to your home screen. No app store, no store account.",
              "tone": "good"
            },
            {
              "id": "devices",
              "name": "Works on",
              "answer": "Phone, tablet and computer",
              "meaning": "The same app on any phone, tablet or computer, with nothing else to buy or install.",
              "tone": "good"
            },
            {
              "id": "account",
              "name": "Account",
              "answer": "Account for some",
              "meaning": "Some features of the app need an account, and others don't.",
              "tone": "mixed",
              "note": "Senders sign in. People signing don't need an account."
            },
            {
              "id": "offline",
              "name": "Offline",
              "answer": "Needs internet",
              "meaning": "Needs a connection to work.",
              "tone": "mixed"
            },
            {
              "id": "updates",
              "name": "Updates",
              "answer": "Updates itself, with your OK",
              "meaning": "New versions arrive on their own, and switch over when you say, so nothing changes mid-task.",
              "tone": "good"
            }
          ]
        },
        {
          "id": "privacy",
          "name": "Privacy",
          "question": "Who sees what I put in, and can I take it back?",
          "tone": "good",
          "summary": "Cloud, encrypted",
          "facts": [
            {
              "id": "data",
              "name": "Your data",
              "answer": "Cloud, encrypted",
              "meaning": "Kept online, but locked in your browser first, so the service can't read it.",
              "tone": "good",
              "note": "Encrypted in your browser with a key that never reaches the server."
            },
            {
              "id": "tracking",
              "name": "Tracking",
              "answer": "No tracking",
              "meaning": "Doesn't report anything about how you use it.",
              "tone": "good",
              "note": "Server error logs only, with email addresses masked."
            },
            {
              "id": "asks",
              "name": "Asks for",
              "answer": "Files",
              "meaning": "Asks only when you need that feature, and you can say no.",
              "tone": "good",
              "note": "Only when you need that feature."
            },
            {
              "id": "export",
              "name": "Leaving",
              "answer": "Take it with you",
              "meaning": "You can download what you put in, and leave whenever you like.",
              "tone": "good",
              "note": "Download your account's data in one file and each signed document from its page; close the account whenever you like."
            }
          ]
        },
        {
          "id": "footprint",
          "name": "Footprint",
          "question": "What does it take from my device?",
          "tone": "good",
          "summary": "About 3 MB",
          "facts": [
            {
              "id": "download",
              "name": "Download",
              "answer": "About 3 MB",
              "meaning": "A small download: seconds, even on a phone connection.",
              "tone": "good"
            },
            {
              "id": "storage",
              "name": "Space",
              "answer": "Takes little space",
              "meaning": "Uses a few megabytes at most.",
              "tone": "good",
              "note": "Documents stay online; the device keeps only your key and settings."
            }
          ]
        }
      ],
      "priceDetails": [
        "Credit comes in $10 packs. Buying credit opens soon; the first 10 documents are free now.",
        "A standard document uses $0.20; one in strict mode (with an access code) uses $1.00.",
        "Credit is only used when a document is sent, and comes back if sending fails.",
        "Signing is always free."
      ],
      "checked": "2026-11-09"
    }
  ]
}
