perfectdesign.

Members and moderation

Community app development

Building the feed is the easy fortnight. What decides whether a community app survives is who reads a report at three in the morning, and what the software does while nobody is reading.

In short

A community app is ordinary software with an extraordinary operating burden. Profiles, posts, a feed and notifications are a known build; the moment members can post, message or upload, your business is answerable for what appears, and both app stores make reporting, blocking and active moderation a condition of being listed. So the scope starts with the moderation model, the appeal route and the deletion rules, not the screens. If nobody in your organisation owns moderation, the community should not launch, and we will say that before we quote it.

Written for a business owner, product lead or operations lead deciding whether a member community needs its own app and what has to be specified before it is built · 7 min read

Moderation is the whole problem

Profiles, posts, a feed, notifications and maybe messaging is a known piece of software, and you will recognise it immediately because every community product looks broadly the same. None of it is what makes a community work or fail. That is the part nobody puts in a brief: who reads a report, how quickly, against which rule, with what authority to act, and what the software does on its own while no human is available.

That is not only an operational preference. Apple's review guidelines require apps with user-generated content to filter objectionable material, provide a way to report offensive content with timely responses, block abusive users and publish contact information. Google Play requires members to accept your terms before they post, ongoing moderation, in-app reporting and blocking of both content and users, and safeguards so the way the app earns money does not reward bad behaviour. Play also states that apps which end up primarily hosting objectionable content are removed. Moderation is a listing condition, not a phase two.

Since this page tells you how to judge a build partner, here is what we bring. We build member systems with records, roles and admin tooling, which is the machinery a community actually runs on. A close example is VITALE, a direct-sales back office concept with member records, roles and an admin workspace, which is a member system rather than a community and we will not dress it up as one. What we bring is the machinery underneath, and the willingness to say when the operating side is not ready.

What has to happen when someone reports a post. Both app stores expect this path to exist before a social feature ships. A full text version follows.

What has to happen when someone reports a post

Primary-source guidance. Both app stores expect this path to exist before a social feature ships.

Source: Apple: App Review Guidelines. Reviewed .

Read the graphic as text
  • Report. Any member can raise it, in one tap
  • Hide. Removed from view pending a decision
  • Review. A named human decides, with a record
  • Act. Restore, remove, warn or block
  • Appeal. The author can contest the decision
Download this infographic (SVG)

What happens at three in the morning

Picture a report submitted at 03:12 by a member who has just been abused in a thread. Your one part-time moderator starts at nine. For six hours the content stays visible and the reporter assumes nothing was done. That scenario is ordinary, and it is the most useful thing to design against because it forces you to decide what the system does unattended.

  • Hold the first posts from a new or unverified member for review, which slows abuse where most of it enters.
  • Auto-hide content pending review once several distinct members report it, telling the author rather than removing it silently.
  • Rate-limit posting, messaging and account creation, since coordinated abuse depends on volume.
  • Close the riskiest surface overnight, such as direct messages, when nobody is on duty.
  • Publish a response time you can keep, and have the acknowledgement say when a human will look.

Each has a cost. Automatic hiding can be weaponised by a group reporting someone they dislike, so record who reported what and let a moderator reverse it in one action. Holding new members slows genuine growth. Whatever you choose, the interface must not imply a decision when a report has only been received. That gap is where community trust is usually lost.

Half of Malaysia is online nine hours a day. The share online more than nine hours a day went from 38.5% in 2022 to 49.7% in 2024. Another notification is not a neutral addition to somebody’s day. A full text version follows.

Half of Malaysia is online nine hours a day

Published statistic. The share online more than nine hours a day went from 38.5% in 2022 to 49.7% in 2024. Another notification is not a neutral addition to somebody’s day.

Source: MCMC: Internet Users Survey 2024, internet user behaviour. Reviewed .

Read the graphic as text
  • Under 1h: 3.1%.
  • 1 to 4h: 21.5%.
  • 5 to 8h: 25.6%.
  • 9 to 12h: 20.5%.
  • 13 to 18h: 17.1%.
  • Over 18h: 12.1%.

Chart scale: Daily internet use among Malaysian internet users, 2024.

Download this infographic (SVG)

Who can post, message, moderate and appeal

Write the roles down before the screens. A member has a state, usefully pending, active, restricted, suspended or removed, each answering a different question about what they may do today. A moderator can hide, remove, restrict and suspend, always with a recorded reason. An administrator manages roles, rules and escalation. An appeal owner reviews decisions and should not be whoever made the original call. Every action needs four answers: who may take it, what the member sees, what is recorded, and how it is reversed.

Direct messaging deserves its own decision. It is the highest-risk surface in any community because nobody else sees it, so abuse and scams run there first. If you ship it, you need blocking, reporting from inside a conversation, and an agreed position on whether staff may ever read a reported thread, written into the terms members accept rather than decided mid-incident. Plenty of communities are better off adding messages once moderation is proven.

Two kinds of permission get confused here. Android documents an application sandbox built on least privilege, where the manifest declares an app's components, permissions, minimum platform version and required device features, and the person holding the phone explicitly grants access to the camera or location. That is the device layer, and it says nothing about whether one member may edit another member's post. Role permission is yours, it lives on the server, and it must be enforced there even when the app looks like it prevented the action already.

Four roles, four different powers. Decide these before launch, because retrofitting moderation into a live community is far harder. A full text version follows.

Four roles, four different powers

Editorial framework. Decide these before launch, because retrofitting moderation into a live community is far harder.

Basis: Google Play: User-generated content policy. Reviewed .

Read the graphic as text
  • Member. Posts, reports, blocks, leaves
  • Moderator. Hides, warns, removes, escalates
  • Admin. Sets rules, appoints moderators, handles appeals
  • Nobody. Read-only, the state a community starts in
Download this infographic (SVG)

Content states, media and the feed

Name the states a post moves through and who sees each one: draft, published, restricted, reported, under review, resolved and removed. Then decide the awkward cases in advance. Is removal silent, or is the author told and given a reason. What happens to replies under a removed post, since deleting them punishes people who did nothing. These are policy decisions with feelings attached, and they are cheaper to settle now than during an argument.

Media changes the economics. Text is cheap to scan, images are harder, and video is expensive to review and impossible to skim, which makes launching with text and images only a legitimate scope decision. Notifications need the same care. They are the reason people open a community app daily and the reason they delete it, so make them per-type, quiet at night by default, and unable to show reported content to the wrong person.

Sharing moved into the chat. Private messaging nearly doubled in two years. The link somebody forwards to one friend is now almost as common as a public post, and it never appears in your analytics as a share. A full text version follows.

Sharing moved into the chat

Published statistic. Private messaging nearly doubled in two years. The link somebody forwards to one friend is now almost as common as a public post, and it never appears in your analytics as a share.

Source: MCMC: Internet Users Survey 2024, online content sharing platform. Reviewed .

Read the graphic as text
  • Social media: 71.1%.
  • Group chat: 50.1%.
  • Private message: 48.6%. Was 29.4% in 2022
  • Email: 12.1%.

Chart scale: Where Malaysian internet users share content, 2024.

Download this infographic (SVG)

A worked example: post, report, appeal

Take an invented professional members community where verified practitioners post questions and answers. The roles, rules and responses below are teaching assumptions.

A fictional members community, worked through three steps
Workflow stepAssumed actorProposed system responseExceptionAcceptance evidence to collect
Create a postMemberPermitted content publishes under the accepted rules, with author, time and visibility recordedRestricted content or a failed upload stays unresolved rather than half publishedPosting-state tests for a restricted member, a failed upload and a post held for review
Report or blockMemberThe report reaches a queue with its context, the reporter learns what happens next, and blocking applies immediatelyAn acknowledgement is not a decision, and a burst of reports may be coordinated rather than validReport routing, reporter privacy and blocking observations, including what a blocked member still sees
Moderate and review an appealModerator, then a separate appeal ownerThe action, the reason and the rule applied are recorded, and the appeal goes to someone elseNobody is on duty, or the evidence conflicts and the case is escalatedDecision history and role-access tests, including an out-of-hours case and a reversal

When members publish, your business is hosting what they wrote. Defamation, copyright infringement, personal information about someone who never agreed, scams, harassment and content involving minors are ordinary risks of running a community, and how they must be handled depends on your jurisdiction and sector. We are not lawyers and this is not legal advice. What the product can do is give your advisers something to work with: terms accepted at the point of posting, an evidence trail behind every decision, a monitored contact route, and takedown you can perform quickly and prove afterwards.

Deletion is the other half of that record. Apple requires an app supporting account creation to offer account deletion inside the app, and Google Play requires an in-app path to delete the account and its data, a web route to request the same, and a declaration of those practices in the Data safety form. Decide early what deletion means here: the account, posts others replied to, reports filed about that member, and any moderation record you may need for a dispute. Those are four decisions, and they belong in writing before the first request.

When a community app is the wrong build

If a group chat already carries the conversation and the complaint is only that it is messy, an app will not fix that and costs far more to run. If the community is small, a feed looks abandoned, and a quiet app reads as a failing business. If what you need is members logging in to see their own records, renewals or support history, that is a portal, and accounts and portals is the better starting point. The reasons to leave an existing platform are specific: identity you control, records you can keep, content structured enough to search, or membership tied to payment or eligibility.

What to bring

Useful first conversations start with the recurring member task, roughly how many members there are, what they may post, whether they message privately, who moderates and during which hours, and your position on retention and deletion. Bring what you have to the contact page and we will tell you which parts are ready, which need a decision first, and whether this should be a feature of something you already run. Mobile app development covers the platform, backend and testing decisions underneath it.

What you get

What is actually delivered

01

A written moderation model

The accountable person, the hours covered, the rule they apply, the escalation route and exactly what the system does outside those hours.

02

Roles, states and permissions

Member, moderator, administrator and appeal owner, with the profile states, allowed actions, recorded reasons and reversal path for each.

03

Reporting and blocking built in

In-app reporting of content and members, immediate blocking, reporter privacy, and a queue a moderator can actually work through.

04

Content lifecycle

Draft, published, restricted, reported, under review, resolved and removed, with the visibility and notification behaviour defined for each state.

05

Unattended safety controls

New-member holds, report thresholds, rate limits and overnight restrictions, chosen deliberately with their trade-offs written down.

06

Appeals with a record

An appeal route owned by someone other than the moderator who acted, with the decision history retained for disputes.

07

Account and data deletion

In-app deletion, a web request route, and an agreed position on posts, replies, reports and moderation records when a member leaves.

08

Terms accepted at the point of posting

The rules members agree to, recorded per member and per version, so a decision can be traced back to the rule in force at the time.

How it runs

Settle the operating model, then build

Communities rarely fail on the software. They fail because a surface went live that nobody was resourced to supervise, so we settle that first and build to it.

  1. 01

    Test the task

    We check whether a recurring member task genuinely needs its own product, or whether an existing group, forum or portal already carries it at a fraction of the cost.

  2. 02

    Design the moderation model

    Cover, rules, report routing, unattended behaviour, escalation and appeals are agreed in writing, including what the product does when nobody is available.

  3. 03

    Define roles and content states

    We write the role and permission matrix, the states a post moves through, the messaging scope and the notification rules before any screen is designed.

  4. 04

    Build with the controls in place

    Reporting, blocking, holds, rate limits, moderator tooling and the audit record are part of the first release rather than a later addition.

  5. 05

    Rehearse the bad day

    We test the abuse paths before launch: a reported post out of hours, a coordinated report wave, a blocked member, a reversed decision and a deletion request.

  6. 06

    Launch small and watch

    A limited membership first, with the moderation load measured against the cover you actually have, before the community is opened more widely.

Proof

Work you can click through

PantryCue is our own React Native app, with live camera scanning, local notifications, an offline pantry and a Cook Mode that reads steps aloud. You can try the web build, and there is an installable Android build; it is not on the App Store or Google Play.

Concept prototypes are labelled as prototypes everywhere they appear. They demonstrate what we can build, not work delivered for that named client. More client work is going live and will be added as it does.

How we work

The parts people ask about before they commit

How we build

React first, other languages when a project needs them

We build in React by preference, on both web and mobile, and we work in other languages when a project genuinely calls for it.

App stores

The accounts stay in your name

Your business owns the Apple Developer and Google Play accounts. We set them up in your name, prepare certificates and signing, and submit builds for you.

  • Apple Developer and Google Play account setup in your name
  • Certificates, signing and provisioning
  • TestFlight and internal test tracks for review builds
  • Store listing preparation and submission on your behalf

Timeline

Project dependent, and often quicker than expected

Timelines are project dependent. A focused build can go live in about a week, while a larger platform takes longer once scope is agreed.

Ongoing care

Quoted with the project, not bolted on

For a more complex website or a system with a real backend, ongoing care starts from RM 250 a month, with the plan confirmed against what was actually launched. Care is quoted with the project, not bolted on afterwards.

Getting hold of us

Normally under one working day

We normally respond to a support request in under one working day, and we work to solve problems as fast as we can. That is how we normally work rather than a contractual guarantee, and responding is not the same as resolving. If your operation needs a formal response or resolution commitment, we can write one into your scope.

Ownership

Everything belongs to your business

You own everything we build for you: the code, the content, the domain, the hosting account and every third-party account opened for the project. There is no lock-in. If you move to another provider, everything goes with you and we help with the handover.

  • Source code, handed over in your own repository
  • Domain and DNS, registered to your business
  • Hosting and every service account, in your name
  • Analytics, search and ad accounts, with us as a manager you can remove
  • All content, media and data in the system

Questions

Asked about community apps

Straight answers to what people ask before they commit. Anything else, message us.

What do you bring to a community build?

We build community apps as custom projects, and the engineering underneath one is work we do routinely. Our published work is websites, business systems and concept prototypes, including member systems with roles, records and admin tooling, which is the machinery underneath a community but is not the same thing as running one.

Do the app stores really require moderation?

Yes. Apple requires filtering of objectionable material, a reporting mechanism with timely responses, the ability to block abusive users and published contact information. Google Play requires accepted terms before posting, ongoing moderation, in-app reporting and blocking, and safeguards so monetisation does not reward bad behaviour. An app that ends up mainly hosting objectionable content can be removed.

Can we launch without moderators and add them later?

We would advise against it and we would say so before quoting. The realistic alternatives are launching without the public surface, or a version where staff post and members respond privately, which is far easier to supervise. An unmoderated feed tends to damage the brand that paid for it faster than it grows.

Should we include private messaging?

Only with your eyes open. It is the hardest surface to moderate because nobody else sees it, and it is where abuse and scams start. If it is in scope it needs blocking, in-conversation reporting, and a written position on whether staff may read a reported thread. Many communities launch without it.

What does a community app cost, and how long does it take?

It is quoted against scope rather than sold as a package, and our website packages on the pricing page are the wrong comparison. The number moves with messaging, media, moderation tooling and how much of the operating side we build. Timelines are project dependent, and moderation decisions usually set the date more than the build does.

Who owns the members and their data?

Your business does, along with the code, the hosting and every account opened for the project. The member list, the content and the moderation records are yours to export at any time, and if you move to another provider we help with the handover rather than holding the data.

Could we just use an existing group instead?

Often, yes, and it is worth checking honestly. The reasons to leave are specific: you need identity you control, records you can keep, content structured enough to search, membership tied to payment or eligibility, or you cannot leave your member list inside a platform you do not control. If none of those apply, the group usually wins.

Where to go next

Sources

Tell us what you need built

We will show you the closest thing we have already built, then scope the real version against your requirements.