A daily check-in: one click a day earns points, the plugin keeps the streak, and the member sees a seven-day strip.

Where it shows up

  • a Check in tile on the points page (/points, region.points.actions) with the current streak once done;
  • the /checkin page: a hero with the streak and balance, the last seven days, and the check-in button;
  • a Daily check-in rule in Admin → Points, so the amount can be tuned there like any other earning rule;
  • the points ledger uses the flame icon and the "Daily check-in" reason for these awards.

Rules

  • One check-in per member per day. The (user_id, day) pair is unique and the row is inserted before the award, so two
    requests racing cannot pay twice.
  • The award goes through points_award() with the rule tabre_checkin, reference YYYYMMDD, so the ledger, the daily
    cap and the admin log stay in the core.
  • The streak counts back from today (or from yesterday before the first check-in of the day) over at most 60 stored
    days.
  • The amount comes from the points rule, not from the plugin settings directly: turning the rule off in Admin → Points
    disables check-in without changing the plugin.
  • The check-in form is a POST with the CSRF token.

Settings

SettingMeaning
Points per check-inDefault amount used to seed the points rule, 1–100, default 10. Admin → Points overrides it.

Data and uninstall

One row per member per day in plugin_tabre_checkin (user, day, points, created_at). Uninstalling drops that table;
the points that were already awarded stay in the core ledger.

The manifest uses region.points.actions, points.rules, points.reasons, points.icon and the /checkin route.