Define the boundary first

Before choosing an API or writing a line of code, decide what the blocker is for and what it will never claim to do. A clear scope protects the person relying on the app, keeps a learning project manageable and gives every later design choice something solid to be measured against.

Name the person and the moment

Start with one real user. Most home-built blockers are made by someone for their own devices, or by a person helping a consenting adult who has asked for a barrier. Each case leads to different decisions about overrides, notifications and who can change the settings.

Then describe the moments the app is meant to cover. Urges to gamble often cluster around particular times and triggers: late evenings, payday, a big sporting fixture, boredom or stress. If you know the moment, you can decide where friction helps most, such as blocking at night by default, or making changes impossible during a set window.

This manual only covers barriers people choose for themselves. Software that restricts or watches another adult without their knowledge is a different kind of tool, with serious ethical and legal problems, and it is out of scope here.

Adult writing a plan in a paper notebook beside an open laptop on a kitchen table in daylight

Separate a prototype from protection

A weekend build and a tool someone can depend on are different things. Being clear about which one you are making shapes what you tell the user and how much you rely on it yourself.

Learning prototype compared with dependable protection
AspectLearning prototypeDependable protection
CoverageOne device, one browser or one network pathSeveral layers that overlap, including payment and account-level controls
Tamper resistanceEasy to disable by the person who installed itChanges need time, a second step or another person
Blocklist upkeepHand-maintained, updated occasionallyMaintained regularly with a process for false positives
Failure handlingMay fail silentlyTested failure paths with known, documented behaviour
Honest claim"Adds friction on this device""Reduces access across the routes listed here"

Most personal projects stay in the left column, and that is fine as long as the app says so.

List what is out of scope

Gaps that are written down can be covered by something else. Gaps that are ignored become false confidence. A typical out-of-scope list looks like this:

  • Other phones, tablets, consoles and shared or work computers
  • Gambling apps installed before the blocker, which may use their own connections
  • Mobile data, public Wi-Fi or other networks if you only filter at the router
  • Browsers or profiles the blocker does not manage
  • In-person venues, shops and cash
  • Gambling-like features inside games, unless you specifically target them

Show a short version of this list inside the app, near the settings, so the user sees it before they need it.

Choose platforms you can actually support

Each operating system exposes its own filtering and restriction features, usually behind permissions and sometimes behind developer programme membership, special entitlements or device management. These requirements change, so check the current developer documentation for your platform rather than an old tutorial.

Starting with a single platform you use every day is reasonable. You will understand its background-task limits, update behaviour and settings screens far better than a platform you rarely touch, and that knowledge is what makes failure testing meaningful.

Settle data and legal questions early

A blocker sees which domains a person tries to reach, which is sensitive information. The safest design keeps that information on the device, stores as little as possible and never sends it anywhere by default.

If you only build for yourself, the main concern is your own data hygiene. If you publish the app, data protection law, such as UK GDPR in the UK, and app store policies may apply. That is a point to get qualified legal advice for your own situation; nothing here is legal advice.

Write the scope statement

Pull the decisions together into a short statement and keep it next to the code.

User
One adult, using their own devices, who chose the barrier.
Devices
Their personal laptop and phone only.
Mechanism
One documented, system-supported blocking layer, with a personal blocklist.
Override
Possible, but only after a fixed delay, and temporary.
Out of scope
Shared devices, other networks, in-person gambling, existing apps.
Support
A support screen reachable from every block page.

Related build notes