LaunchBeacon documentation
LaunchBeacon is a self-hosted awards platform for websites, themes, apps and games. Creators submit work (free or paid), staff review it, a jury and the community score it, and the best work wins dated awards with verifiable certificates and embeddable badges. This guide covers installation, every screen with its fields and limits, payments, emails and day-to-day running.
Requirements
| Item | Needed |
|---|---|
| PHP | 8.2 or newer with PDO MySQL, Mbstring, OpenSSL, cURL, Fileinfo, GD (with WebP support), DOM, XML, Ctype, Tokenizer and Filter. Intl and Exif are recommended. |
| Database | MySQL 8 or MariaDB 10.6 or newer (full-text search is used). |
| Web server | Apache or Nginx with the document root pointing at the public folder. LaunchBeacon runs at the root of its own domain or subdomain (for example awards.example.com). |
| HTTPS | Required for payments, gateway webhooks and browser notifications on a live site. |
| Cron | One cron entry that runs every minute (see Scheduler and queue). |
Installation with the installer
- Unzip
launchbeacon.zipand upload the contents to your server, for example to/home/you/launchbeacon. - Point the domain's document root at
/home/you/launchbeacon/public. On cPanel, set it under Domains for the domain or subdomain. - Create an empty MySQL database and a user with all privileges on it.
- Open the domain in a browser. Until installation finishes, every visit goes to the installer at
/installer. - Server requirements lists PHP and each extension with OK, Missing or Recommended. Enable anything missing in your hosting panel and reload. Next step unlocks when nothing required is missing.
- Folder permissions checks that
storage, its subfolders,bootstrap/cacheand the application folder (for.env) are writable. On Linux runchmod -R 775 storage bootstrap/cacheif needed. - Database and admin asks for the site name and address (must start with http:// or https://), the database name, user, password, host and port (1–65535), and the admin account: your name, email and a password of at least 8 characters with letters and numbers. Press Install.
- The installer replaces every table in the database, imports the starting data, creates the admin account (on the house jury), writes
.envwith a new application key and createsstorage/installed. You land on the staff sign-in at/admin/login. The installer cannot be opened again afterwards.
The installer makes no network calls. If a field is wrong it returns to the form with the problem shown under the field; nothing is written until every value passes.
Manual installation
cp .env.example .env # then set APP_URL and the DB_* values
php artisan key:generate
php artisan migrate --seed --force
php artisan storage:link
php artisan tinker --execute="App\Models\Admin::create(['name' => 'Your Name', 'email' => 'you@example.com', 'password' => 'a-strong-password', 'role' => 'owner', 'is_jury' => true]);"
date > storage/installed
php artisan optimize
Keep APP_ENV=production and APP_DEBUG=false on a live site. DB_TIMEZONE=+00:00 keeps timestamps in UTC even when the database server runs on local time.
Scheduler and queue (cron)
Add one cron entry. It runs the scheduler every minute, and the scheduler also works the email and job queue, so no separate worker is needed on shared hosting.
* * * * * cd /home/you/launchbeacon && php artisan schedule:run >> /dev/null 2>&1
Settings → Scheduler shows whether cron has run recently, the exact line for your server and a web-cron address for hosts without cron access.
| When | Task | What it does |
|---|---|---|
| Every 5 minutes | lb:voting-close | Closes voting windows that ended, freezes scores and grants honorable mentions. |
| Every 5 minutes | lb:orders-expire | Cancels unpaid orders older than 24 hours and returns their drafts. |
| Hourly | lb:sla-alerts | Alerts the staff who review work (admins and the jury) about reviews due within two hours or overdue. |
| Hourly | lb:links-check | Checks that live works still open. A link failing for 7 days hides the work from walls. |
| Daily 00:05 | lb:awards-propose --kind=day | Proposes yesterday's winner for each type. |
| Daily (publish time, default 09:00) | lb:awards-publish | Publishes confirmed proposals (and unreviewed ones when that setting is on). |
| 1st of the month 00:10 | lb:awards-propose --kind=month | Proposes last month's winner and People's choice. |
| 5 January 00:15 | lb:awards-propose --kind=year | Proposes last year's winner. |
| Daily 02:00 | lb:subscriptions-reconcile | Checks memberships with their gateway, expires ended terms and sends renewal reminders. |
| Daily 03:00 | lb:sitemap | Rebuilds the sitemap files. |
| Daily 07:00 | lb:jury-digest | Emails each juror how many works matching their expertise wait for a score, when new ones opened since yesterday. |
| Mondays 08:00 | lb:newsletter-digest | Drafts the weekly issue and sends it when automatic sending is on. |
Times follow the time zone under Settings → General.
First sign-in checklist
- Settings → General: tagline, contact email, time zone, languages and store currency.
- Settings → Branding: site name, logos, favicon, colours and fonts.
- Settings → Email (SMTP): enter your mail server and use Send test email. Without email, creators cannot confirm their address.
- Settings → Payments: add your PayPal credentials (see PayPal) and switch on any other gateway you use.
- Settings → Tax and invoices: seller details printed on invoices, and a tax rate if you charge one.
- Pricing and plans: check tier prices per type and the membership plans.
- Settings → Scheduler: confirm cron is running.
- Pages: review the terms, privacy, refund and cookie pages.
Demo content
php artisan db:seed --class=DemoSeeder fills an empty install with thirteen months of fictional activity: creators, jurors, 300 works in every state, votes, awards, paid orders, a membership, blog posts and newsletter subscribers. Every person, studio and address is invented and every image is drawn by the seeder. It refuses to run on a database that already has submissions. All demo accounts use the password demo1234: the client creator@example.com, the juror jury@example.com, and the staff admin@example.com (admin), housejury@example.com (jury) and editor@example.com (editor).
Public pages
| Page | Address | What visitors see and do |
|---|---|---|
| Home | / | The hero is a slider of up to three highlights: today's winner, a work open for voting and the most awarded creators (a slide is left out when it has nothing to show). The previous and next arrows under it step through the slides, the numbered pills beside them pick one, and the arrow keys move between the pills; with full motion it moves on every 7 seconds, waiting while the pointer or keyboard focus is inside it, and the pause button stops it. Below it: today's winners (drag or throw the rail, or use its arrows; each move lands on a card), the latest winners, the Stacks band (a full-width strip with a Themes, Apps and Games tab; each tab shows its platforms, built with and languages as rows of logos that loop across the page in alternating directions, pausing under the pointer or keyboard focus and standing still as scrollable rows when motion is reduced or off; a logo opens that type's winners filtered by the stack; the lists follow Categories and tags), work open for voting, the Spotlight rail, how judging works, top creators, pricing and the newsletter form. |
| Winners | /winners/{type} | Published awards; filter by award (day, month, year, honorable mention, People's choice), category, stack (the Any stack list, grouped into Platforms, Built with and Languages) and month. The AI toggle at the end of the filters shows only work built with AI; it stays on when you switch type with the pills. The Winners menu in the header opens on hover or click: one row per type, and beside the row under the pointer or keyboard focus that type's filters. Themes, apps and games show their Platforms, Built with and Languages (every one offered for the type, in name order, each with its logo) beside their ten most used categories. Websites are listed by category only, so they show their categories. Each entry opens this wall already filtered. On a theme, app or game wall the Any stack filter offers the same stacks. Which stacks belong to which type is set under Categories and tags. |
| Nominees | /nominees/{type} | Work open for voting; Spotlight pins first (labelled). Filter by category and stack, turn on the AI toggle to show only work built with AI (Spotlight pins included; it stays on when you switch type), and sort by newest, ending soon or most liked. The Nominees menu in the header works like the Winners menu. |
| Work page | /websites/{slug}, /themes/…, /apps/…, /games/… | Award stubs, score ring and breakdown after voting closes, like, share, the way out (Visit site on websites, Preview now on themes, apps and games; the cover leads to the same address), the pictures under the cover (mobile screenshot and gallery), which open full size in a viewer with arrows, a counter and a row of thumbnails (arrow keys, a swipe or Esc also work), the website address under Details, vote panel while voting is open, Ask AI buttons under the description on Boost and Spotlight work (see Pricing and plans), credits, categories, tags, related work and a report link. Work built with AI shows a Built with AI badge beside its award stubs and lists AI provider, AI model and Tokens used under Details; its cards on every wall carry an AI badge in the top corner. |
| Categories and tags | /categories, /tags/{slug} | Category tiles per type with counts, and filtered walls. |
| Search | /search | Search by name, purpose or technology, optionally awarded only. |
| Directory | /directory | Creators with filters for role, skill, country, budget, awarded and members; up to three featured creators first (see Directory featuring). |
| Profile | /u/{username} | Award counters, bio, skills, works and awards, and a hire form for members whose plan includes it. |
| Jury | /jury | The jurors, with Become a juror beside How judging works and a card at the bottom inviting designers and developers to apply (it states the pay rate while jury pay is on). |
| Become a juror | /jury/apply | What jurors do, the number on the panel and, while jury pay is on, the rate. Guests get Log in and Create an account; signed-in creators get the application form (see Jury panel). |
| Awards | /awards | The judging rules, drawn from your live settings, and the certificate and badge showcase. |
| Pricing | /pricing | Tiers per type and membership plans with a monthly or yearly switch. |
| Certificates | /certificates/{number} | Public verification of a certificate number. |
| Blog, pages, contact | /blog, /{slug}, /contact | Posts two to a row beside the blog sidebar (categories, latest posts, RSS at /feed); a post keeps the same width, its cover across the page and the text beside the sidebar. Legal and about pages sit at the root (/about, /terms…), and the contact form (stored in the staff Inbox). |
Visitor forms and their limits
| Form | Fields and rules |
|---|---|
| Contact | Name (up to 120 characters), email, topic (general, support, advertising or partnerships), message (20–5,000 characters), captcha when set up. Up to 5 messages a day from one address. |
| Hire form | Signed-in creators only, not on their own profile. Message (20–2,000 characters), optional budget band, captcha. Up to 5 a day per sender. It is emailed to the profile owner if they keep hire requests switched on. |
| Community vote | Signed-in, confirmed email, account at least 3 days old (setting), not the owner. One score from 1 to 10 in steps of 0.5, changeable until voting closes. |
| Like | Signed-in creators, one per work; likes never affect the score. |
| Report | Reason (broken link, plagiarism, inappropriate, spam or other) and an optional note up to 500 characters. Up to 20 reports a day per person. |
| Newsletter | Email; a confirmation email follows (double opt-in). A signed-in creator's own confirmed address is subscribed at once. |
Submitting work
- Submit (
/submit) asks what the work is: website, theme, app or game. Guests can start; they are asked to register before the details step. - The creator enters the address (the live preview address for a theme, a store and store link for an app or game) in the card at the top, then picks a tier (Free, Boost or Spotlight) and presses Continue under the tiers. Members see their discount and credits.
- The details form saves itself as a draft while the creator types. A duplicate address is refused with a link to the existing work.
- The creator ticks that they own or may submit the work. Free work goes straight to review. Paid tiers go to checkout; the work enters review once payment is confirmed.
What the details form asks for
| Field | Rules |
|---|---|
| Title | Required for review, up to 120 characters. |
| Tagline | Up to 160 characters. |
| Address (websites and themes) | Required for review, http or https, up to 500 characters. |
| Store links (apps and games) | At least one of Google Play, App Store, Microsoft Store, Amazon Appstore, Steam or Web, each up to 500 characters. Pricing model: free, paid or freemium. |
| Theme details | Marketplace link and price label (up to 40 characters). |
| Images | Cover (required, shown at 16:10), icon (required for apps and games, square), mobile screenshot (websites and themes) and gallery images up to the tier's limit. JPG, PNG or WebP, up to 5 MB each by default. Every image is re-encoded to WebP at 400, 800 and 1600 pixels wide. |
| Categories | At least one, up to 3 from the chosen type. |
| Platforms, built with and languages (themes, apps and games) | Websites have none; they are listed by category. Ticked from the lists offered for the chosen type: up to 3 platforms (such as WordPress, Magento, iOS or Steam), up to 5 under Built with (frameworks and engines such as React, Laravel, Flutter or Unity) and up to 3 languages (such as PHP, Python or C#). The work page shows them in rows of the same names. |
| Tags | Up to 5 topics such as Minimal or Dark mode, each up to 40 characters; new names become new tags. |
| Description | Required for review with at least 80 characters of text (formatted text up to 40,000 characters). |
| Credits | Developer name (120), website (500) and country. |
| Built with AI | Optional, in its own section. Turn on This work was built with AI to show AI provider and AI model (the model list shows only the chosen provider's models) and Total tokens used (a whole number). Turning the switch off clears all three. The provider and model lists are kept in config/ai_catalog.php: add, rename or remove entries there. Work built with AI carries an AI badge on its cards and a Built with AI badge on its work page, where Details lists the provider, model and tokens. |
| Social links | X, Facebook, Instagram, Pinterest, LinkedIn, Dribbble and Behance addresses (255 each). |
| Search | SEO title (70), focus keyword (80), meta description (160). The AI assistant can suggest these when it is set up. |
Staff then approve (voting opens), request changes (the creator edits and resubmits) or decline.
Voting, scores and awards
- Voting opens when staff approve a work and lasts the number of days set under Settings → Submissions and voting (7 by default).
- Jurors score Design, Usability, Creativity and Content from 1 to 10 in steps of 0.5. The weights (40, 30, 20 and 10 by default) must add up to 100.
- Community members give one overall score. They need a confirmed email and an account at least 3 days old, and cannot vote on their own work.
- The final score is 80% jury and 20% community, or the jury score alone while there are fewer than 5 community votes. A work needs at least 3 jury votes to be ranked.
- When voting closes, a work with a final and a jury score of at least 6.5 earns an Honorable mention automatically.
- Every night the best honorable-mention work of the past week that has not won yet is proposed as winner of the day for its type. Staff confirm or replace it in the Awards desk. Days without eligible work have no winner.
- On the 1st, the best day winner of the month is proposed, plus People's choice (highest community score with at least 20 community votes). On 5 January the best month winner of the year is proposed.
- Ties go to the work with more jury votes, then to the one approved first.
- Every published award gets a certificate number (
LB-2026-000123) that anyone can verify, a PDF certificate for the owner and embeddable badges in light, dark and compact styles.
Tiers, memberships and credits
Each type has three tiers whose prices and benefits are edited under Pricing and plans: review time, gallery images, days pinned on Nominees, days on the home Spotlight rail, newsletter feature, social post, directory listing, the Ask AI buttons and the link attribute on the visit button. Paid links carry rel="sponsored", free ones nofollow ugc; an earned award makes the link followed.
Memberships (Pro and Studio as installed) can grant a tier discount, monthly Boost and Spotlight credits, priority review, a badge, analytics, a followed profile link, directory featuring, a profile cover, the hire form and featured categories. Gateways with automatic renewal (PayPal, Stripe, Mollie, Paystack, GoCardless) renew by themselves; the others sell a prepaid month or year with reminder emails before it ends. Credits come with each paid period and stay usable for 30 days after a membership ends.
A creator can upgrade Free to Boost or Spotlight at any time before voting closes and pays only the difference. Unpaid orders expire after 24 hours and the draft is released.
Sign-up, profile and security
Clients (the people who submit work) reach their account from the avatar menu or at /account; the tag beside the logo reads Client, or Juror for jurors. The sidebar holds Overview, Submissions, Awards, Billing, Plan, Profile, Security, Notifications, Privacy and, for jurors, Jury.
| Screen | Fields, controls and rules |
|---|---|
| Register | Name (2–120 characters), optional username (3–40 lowercase letters, numbers and dashes, not starting or ending with a dash; picked from the name when blank), email, password (at least 8 characters with letters and numbers), the terms tick and captcha when set up. Up to 5 sign-ups an hour from one address. A confirmation email follows; submitting and voting need a confirmed email. |
| Sign in | Email and password with Remember me. After 5 wrong passwords for the same email and address, sign-in waits 60 seconds. Suspended accounts cannot sign in. Forgot password emails a reset link (captcha when set up). |
| Overview | 30-day views, likes and visits, work that needs action, credit balance and membership status. |
| Profile | Photo (JPG, PNG or WebP up to 4 MB, saved at 400 × 400) with Upload photo or Replace photo, and cover (up to 6 MB, saved at 1600 × 400, Studio members only) with Upload cover or Replace cover; other members see Upgrade to Studio in its place. After choosing a picture, drag it in the frame, move it with the arrow keys or use Zoom to choose the part that is kept; without that, the picture is centred. Remove photo and Remove cover clear them. Then name (2–120), company (120), profile address (3–40 characters, changeable once every 30 days; the old address keeps redirecting), role, website, country, bio (600), up to 8 skills, up to 8 languages, open to, typical budget and social links. Press Save profile. |
| Security | Change password needs the current password and a different new one. Change email needs the password; the new address must be confirmed from the email sent to it. Sign out other sessions needs the password. |
Submissions and revisions
- Submissions lists every work with its cover, tier, status and score, filtered by status and type, as a grid or a list. Open one to see its status timeline, daily views and visits, score breakdown and actions.
- Edit uses the same fields as the details form. Drafts and work sent back for changes save directly. Work that is live saves as a revision: the public page keeps the current version until staff approve it. Withdraw these changes cancels a pending revision.
- After an award, the title and address can only be changed by staff.
- Resubmit sends work with requested changes back to review once every required field is filled.
- Upgrade to Boost or Spotlight opens checkout for the difference (a draft simply switches tier).
- Archive removes a work from the site and cancels its unpaid order. Orders, invoices and awards are kept; an archived award page says the work was removed by its owner.
Awards, billing and plan
- Awards shows each award with its certificate PDF (the link works for 2 hours) and badge embed code in light, dark and compact styles with a copy button.
- Billing lists orders with invoice PDFs, the membership card with its next date and Cancel (the membership stays active until the end of the paid period), the credit history and the billing details printed on invoices: name (120), company (120), email (190), country, address (500) and tax ID (40).
- Plan compares memberships with a monthly and yearly switch and starts checkout, or switches plan where the gateway allows it.
- At checkout the creator enters billing details, can apply a coupon and use store credit, ticks the terms and refund policy, and chooses a gateway. A zero total is confirmed without a gateway.
Notifications and privacy
- Email me about: switches for review results, voting results, awards, membership reminders, hire requests and (jurors) the jury digest, plus the weekly newsletter. Receipts, confirmations and password emails are always sent. See Emails for which switch controls which email.
- Browser notifications appears when browser push is set up. Turn on asks the browser for permission; the card then shows On in this browser with Turn off. Each browser is turned on separately, up to 10 per creator.
- Recent lists notifications with Mark all as read.
- Privacy: Download my data gives a JSON file of the profile, submissions, votes, likes, orders and credits. Delete account needs the password and a confirmation tick; it removes the profile, photos and likes, archives the work and cancels memberships. Orders and invoices are kept without the name, as tax rules require.
Jury panel
Become a juror (/jury/apply, also linked from the jury page): creators with a confirmed email fill in the kinds of work they can judge (at least one), up to 3 skills and up to 3 each of platforms, built with and languages, years of experience (0–60), a portfolio or website address (optional), why they want to judge (80–2,000 characters) and a tick promising honest scores, then press Send application. While it waits, the page shows the application with Withdraw application (confirmation). A declined creator sees the reason staff gave and the date they can apply again. Once approved, the page links to the jury desk. Unconfirmed, unclaimed and suspended accounts cannot apply, and while applications are closed the page says so.
Creators marked as jurors see Jury in their account: work open for voting that they have not scored, oldest window first. Opening one shows the work and a scoring sheet with four sliders from 1 to 10 in steps of 0.5 (keyboard arrows work), an optional comment up to 500 characters and the live weighted result. Jurors cannot score their own work. Scores can be changed until voting closes; after saving, the next waiting work opens.
Expertise: on Profile, under What you do, a juror picks up to 3 skills and up to 3 each of platforms, built with and languages (the stacks listed under Categories and tags); jurors are not asked what they are open to, and their public profile leaves it out. The expertise named in an approved application is copied here and can be changed at any time. Waiting for your score, the next work after saving a score, the daily jury digest and Remind jurors all count only work that lists one of the juror's platforms, built with or languages. A juror who has picked none sees Choose your expertise with a link to their profile. Websites list no stacks, so they never reach the jury panel; staff on the house jury score them from the moderation screen.
While jury pay is on (Settings → Jury), two cards come first:
- Earnings: due now, unpaid scores that count, paid so far, a bar toward the next payment (for example 37 / 100) and the payments recorded, each with its amount, scores covered, method, reference and date. The help icon states the rate. When a payment is due and no payout details are saved, a warning asks for them.
- Payout details: paid by (PayPal, Bank transfer, Wise or Other), name on the account (required, up to 120 characters), PayPal or Wise email (required for those two), bank name and IBAN or account number (both required for a bank transfer), SWIFT or BIC, country, and anything else staff need (required for Other, up to 500 characters). Save payout details stores them encrypted; only staff who record jury payments see them. Change them at any time; a payment already recorded keeps the details it was sent to.
Sign-in, sidebar and roles
Staff sign in at /admin/login (clients and staff are separate accounts; up to 10 attempts a minute). The sign-in card shows your logo (or the mark beside the site name). The tag beside the logo in the sidebar shows your role (Admin, Jury or Editor). The sidebar groups Review, Awards, Content, Clients, Revenue and Marketing, then Inbox, Settings and Staff. Counts beside Moderation queue, Revisions, Reports, Awards desk, Jury applications, Social queue and Inbox show what is waiting. Your own profile (name, email, time zone, photo up to 2 MB and password, which needs the current password) and View site (the public site in a new tab) are in the avatar menu.
| Role | Opens |
|---|---|
| Admin | Everything, including Settings and Staff. |
| Jury | Review, Awards, Content, Clients and Inbox. |
| Editor | Content, Marketing and Inbox. |
Staff marked On the house jury can score work from the moderation screen, so awards work before you have outside jurors.
Overview
Cards for revenue in the last 30 days, monthly recurring revenue, submissions and new creators in 30 days, and work in review; a revenue chart; Next in the queue with Open the queue; award proposals waiting; and the latest orders. While maintenance mode is on, a bar at the top of every staff page says so.
Moderation queue
View: work waiting for review, soonest deadline first, with tier and deadline badges. Filter by title search, type and tier.
Open a work to see its details, description, maker, signals (link check, duplicates, reports) and, when the AI assistant is on, AI read-through with Summarise.
- Approve and open voting, with an optional note to the maker (up to 1,000 characters). Placements and the social post for paid tiers are scheduled automatically.
- Request changes: pick a template or write the message (10–2,000 characters); the maker edits and resubmits.
- Decline: pick a template or write the reason (10–2,000 characters). For a paid submission choose whether its amount returns as store credit or nothing is returned; cash refunds are made from the order.
- House jury score: staff on the house jury score the four criteria (1–10 in steps of 0.5) with an optional comment up to 500 characters.
A work that is no longer in review cannot be decided again from this screen.
Revisions
View: pending changes to live work, with the maker, changed fields and date; switch to reviewed ones with the status filter. Open one for a side-by-side comparison of each changed field and any new images. Approve the changes publishes them (optional note up to 1,000 characters); Decline the changes needs a reason of 5–1,000 characters that is sent to the maker. A revision can be decided only once.
Reports and message templates
View: open reports with the work, reason (broken link, plagiarism, inappropriate, spam or other), note and reporter; switch status with the filter.
- Mark resolved closes every open report on that work.
- Archive the work resolves the reports and archives the work with the report reason as the note.
- Dismiss closes only that report.
Message templates holds the texts offered when requesting changes and declining. New template: used for (request changes or decline), title (up to 80 characters), message to the maker (up to 2,000) and order (0–999). Open a template to edit it; delete it from its form at any time.
Voting
View: work with open voting windows, closing soonest first, with jury votes against the number needed, community votes and the closing time. A chip at the top counts work short of jury scores; the jurors button opens Jury.
- Remind jurors (on work still short of jury scores): notifies every active juror whose expertise matches the work and who has not scored it yet, never its owner, by email, bell and browser, with a link to the scoring sheet. The same work can be reminded about once every 12 hours.
- +2 days extends the window by two days from its current end (or from now if it already passed).
- Close now (confirmation) freezes the scores and publishes the work straight away.
Awards desk
View: proposals for the chosen award (day, month or year) and period, then published awards with certificate numbers. Use Previous period to look back.
- Propose winners runs the proposal now: choose the award and optionally a date as
YYYY-MM-DD,YYYY-MMorYYYY(blank means the previous period). Slots that already have a proposal are skipped. - Replace with swaps a proposal for another eligible work (best first). A published award cannot be moved.
- Confirm marks a proposal as checked; it publishes at the daily publish time.
- Publish now publishes immediately with its certificate.
- Remove a proposal, or Withdraw a published award (confirmation): the certificate stops verifying and the badge disappears.
Jury
View: jurors with their scores in the last 30 days and in total, and the staff on the house jury. Add a juror: search a creator by name, username or email and press Add. Remove (confirmation) takes a juror off the jury; their past scores stay. Staff join the house jury from Staff. Applications (with the number waiting) opens Jury applications, Payouts (for staff who open Revenue) opens Jury payouts, and Public jury page opens /jury.
Jury applications
Awards → Jury applications. View: tabs for Waiting, Approved, Declined and Withdrawn, each with its count; every row shows the creator, the kinds of work they can judge, years of experience and when they applied. The sidebar count shows applications waiting, and each new one sends a staff alert to staff who open Awards. Application page opens /jury/apply.
Review (or Open for decided ones) shows the creator with their email and whether it is confirmed, why they want to judge, kinds of work, skills, platforms, built with and languages, experience, portfolio link, works and awards, when they applied and joined, up to six live works, and their earlier applications. Public profile opens their page.
- Approve and add to the jury: an optional bio for the jury page (up to 300 characters, filled from the profile to start). The creator joins the jury straight away, the skills and stacks from the application become their profile expertise, and they are told by email and bell.
- Decline application: a reason is required (up to 1,000 characters) and is emailed to the creator. They can apply again once the days set under Settings → Jury have passed.
An application can be decided only once. To take an approved juror off the jury, use Remove on Jury.
Submissions
View: every work in every state with owner, tier, status, score and last update. Search by title, address, owner or number; filter by status, type and tier. Tick rows (or Tick all) for bulk archive or restore.
Edit any field with the same limits as the details form, in cards for basics, description, categories and tags, credits, social links, search and Tier and owner (move the work to another account by username or email, change the tier and the link attribute). Archive submission takes an optional note up to 500 characters. Restore returns archived work to the state it was archived from (published if its voting window has passed). Review jumps to the moderation screen.
Images: add a cover, a mobile screenshot (websites and themes) or an app icon (apps and games), or gallery pictures up to the tier's limit, as JPG, PNG or WebP within the size set in submission settings. Staff changes apply at once, without a revision; Remove (confirmation) is refused for the cover or app icon of published work, so upload a replacement instead. Drafts owned by an unclaimed profile also show Publish listing (see Profile claims).
Types
One row per installed type (website, theme, app, game): name, plural name and award name (each up to 40 characters, for example "Site of the day"), icon (lowercase letters, numbers and dashes), order (0–99) and Takes submissions and shows on the site. Press Save. At least one type has to stay open. The four types cannot be deleted and new kinds of work need development.
Categories and tags
- Categories: pick a type to list its categories with address, live works and order. New category: type, name (up to 60 characters), address (up to 70, unique within the type), image (JPG, PNG or WebP up to 4 MB) and order (0–999). Open a category to edit it. Delete is refused while works use the category; move them to another category first.
- Tags: tags come in four groups. Platforms, Built with and Languages are the stacks creators tick on the submission form and visitors browse in the Winners and Nominees menus and the Any stack filter; Topic tags are the ones creators type.
- Add a tag: name (up to 40 characters, unique), group, and Offered for (themes, apps, games). A stack with no type ticked is offered for themes, apps and games. Websites are listed by category only and never take stacks; topics suit every type.
- View: search by name and filter by group. Each row shows the name (with the stack's logo, or its initials for a stack you added), group, the types it is offered for and its live works. The same logos show in the menus, on the submission form and on work pages. Change any of them inline and press Save; renaming to a name that already exists is refused, so merge instead.
- Tick spelling variants, type the tag to keep in Merge ticked into… (created if new) and press Merge; the works move to that tag. Delete (confirmation) removes a tag from its works.
The stacks a new install starts with:
| Group | Offered for | Stacks |
|---|---|---|
| Platforms | Themes | WordPress, WooCommerce, Shopify, Webflow, Framer, Drupal, Joomla, Magento, OpenCart, PrestaShop, CS-Cart, nopCommerce, osCommerce, Osclass, X-Cart |
| Platforms | Apps and games | iOS, Android, Windows, macOS, Web; Steam (games only) |
| Built with | Themes | React, Next.js, Vue, Nuxt, Angular, Tailwind, Laravel, Django, Node.js, GSAP, Figma; Three.js and WebGL (also games) |
| Built with | Apps | Flutter, React Native, Ionic, Cordova, Xamarin, Titanium; Corona and Unity (also games) |
| Built with | Games | Godot, Buildbox, Construct 3 |
| Languages | Themes | HTML, CSS, PHP, Ruby; Python, Go and VB.NET (also apps); JavaScript, Java, C# and C & C++ (also apps and games) |
| Languages | Apps and games | Swift, Kotlin |
Blog
View: posts with category, state and date; filter by state and category. The Categories card adds (name up to 60 characters), renames and deletes categories; deleting one leaves its posts without a category.
New post: title (up to 160 characters), address (up to 180, unique, made from the title when blank), excerpt (300), cover (JPG, PNG or WebP up to 8 MB), the post body (required, editor with headings, lists, quotes, links and images), category, state (draft or published) with publish date (a future date schedules the post), SEO title (70) and meta description (160). Save post; Delete post (confirmation) from the form. Staff can preview drafts on the site.
Pages
View: pages with address, state, footer link and last update. About, terms, privacy, refunds and cookies are installed. New page: title (up to 120 characters), address (up to 120, unique), body (required), published, link in the footer, order in the footer (0–999), SEO title (70) and meta description (160). Terms, privacy, refunds and cookies are linked from checkout, so their address is locked, they are Always published and they cannot be deleted; other pages can be deleted from their form.
Users
View: creators with username, works, award points, status and join date. Search by name, username, company or email; filter by status, or show members, jurors, unconfirmed emails or unclaimed profiles (these open under Profile claims).
Open a creator to see their submissions and orders and to change the account: name (120), company (120), email (unique) and username (3–30 lowercase letters and numbers with single dashes; the old address redirects). Then:
- Confirm email for someone whose confirmation email did not arrive.
- Suspend signs them out and blocks sign-in (their work stays online); Restore access undoes it.
- Credits: kind (Boost, Spotlight or store credit), grant or take, amount (whole credits for Boost and Spotlight, a money amount up to 100,000 for store credit) and a reason up to 140 characters, then Apply. Taking more than the balance is refused.
- Public profile opens their page.
Directory featuring
The directory's featured block shows up to three creators at a time: staff picks first, then members whose plan includes directory featuring.
- Feature a creator: search active creators by name, username or email, pick the last day in Featured until (from tomorrow up to a year ahead) and press Feature.
- Staff picks lists current picks. Change a date and press Save, or Stop featuring (confirmation). A pick ends by itself after its date.
- Featured by their plan lists members featured automatically by their membership; which plans do this is set under Pricing and plans.
Profile claims
List a company before it joins, add its work, and hand the profile over when its owner claims it. An unclaimed profile has a public page with an Unclaimed chip and a Claim this profile button. It cannot sign in, never receives email or notifications, and cannot be invited to the jury.
View: Claim requests waiting for review, oldest first (their count shows in the sidebar); Unclaimed profiles with website, live works, drafts and open invitations, searchable by name, username or website; and Recent decisions. Unclaimed profiles also appear under Users (filter Unclaimed profiles) and open here.
- New unclaimed profile: name (up to 120 characters), kind (company, studio, agency or freelancer), website, country and about (1,000). A website another profile already uses is refused.
- Open a profile to change its logo, name, kind, website, country, about and social links, then Save profile. Delete profile (confirmation) shows only while it owns no works, archived ones included; its open requests are declined with a note and its invitations stop working.
- Add a listing (staff who can open Content): type (website, app or game; themes are left out because theme authors submit their own), the store an app or game link opens, and the address. An address already on the site is refused. It opens the submission screen with a Free draft owned by the profile: fill in the details and Save changes, add pictures in the Images card, then press Publish. Publish listing lists what is still missing (title, address or store link, cover, app icon, a category, and a description of at least 80 characters) and opens voting at once, like an approved submission.
- Invitations: enter the owner's email and press Send invitation. The link works for 30 days, only for a confirmed account with that email; inviting the same address again resends the open invitation. Without email set up the button reads Create invitation: use Copy link and send it yourself. Cancel (confirmation) stops a link working.
How owners claim
A signed-in creator with a confirmed email presses Claim this profile and uses one of these:
- Company email: claims at once when their confirmed email is at the domain of the profile website or of one of its works. Webmail addresses such as Gmail, Outlook, Yahoo, iCloud and Proton never count.
- Website check: put
<meta name="lb-verification" content="…">in the head of the home page, or uploadlb-verification.txtcontaining the code to the site root, then press Check. The code belongs to that account and profile. The check follows up to three redirects, never reaches private network addresses, and runs up to six times a minute. - Staff review: a message of 30 to 2,000 characters about their role. Staff who can open Creators are alerted. One person can have up to three requests waiting and can Withdraw request.
- The link in an invitation staff sent.
Open a request to see the claimant, their message, the profile's domains, whether the claimant's email is at one of them, and other open claims on the same profile. Then Approve claim (confirmation) or Decline claim with a reason of 10 to 1,000 characters, which is emailed with a link to try again.
An approved claim, in one step: moves every work (archived ones too) to the claimant with its awards, scores and certificates; fills the claimant's empty company, website, country, about, photo and cover from the profile, merges social links and carries over a staff directory pick; makes the old profile address redirect to the claimant's profile; declines the other open requests and cancels invitations; and deletes the unclaimed profile. The claimant is notified, and staff are alerted about claims approved without a review. Suspended accounts cannot claim.
Orders
View: orders with buyer, items, total, gateway, status and date; search by number, name or email and filter by status and gateway.
Open an order for items, payments, buyer and documents, and:
- Refund (paid orders only): amount up to what is still refundable, method (through the gateway, for gateways with a refund API, or record a refund you made in the gateway's own dashboard) and an optional note up to 500 characters. A credit note is issued and the buyer is emailed. A full refund takes back what the order gave: a submission not yet approved returns to Free (an upgrade returns to its earlier tier) and loses its pins, used credits and store credit come back, and a prepaid membership ends.
- Confirm payment for bank transfers, with an optional bank reference or note up to 500 characters; an order that is already settled cannot be confirmed again. Transfer proof downloads the file the buyer uploaded.
- Send receipt again and PDF for invoices and credit notes.
Payments and webhooks
Payments lists every charge and refund with gateway reference, filtered by gateway and kind, with charges, refunds and net for 30 days. Webhooks lists events received from gateways with their state (failed, waiting or done) and attempts, filtered by gateway and state; Retry processes a failed event again. Duplicate events are ignored automatically, and five failures in a row for one gateway alert owners and finance staff by email and in the bell.
Subscriptions
View: memberships with member, plan, gateway, status and period end; filter by status and plan. Sync reads the latest state from the gateway (renewing gateway subscriptions only). Cancelling stops a running membership from renewing at the gateway, and the member keeps access until the period ends. End now (confirmation) stops the benefits at once. Money is not refunded automatically; refund the order separately if needed.
Pricing and plans
Tier prices: a table per type with a row per tier. Price (0–100,000 in the store currency), on sale, review within (1–2,160 hours), gallery images (0–20), pinned days on Nominees (0–60), home Spotlight days (0–60), link attribute, and switches for newsletter feature, social post, directory listing and Ask AI (on for Boost and Spotlight, off for Free by default). Press Save prices. Every tier, Free included, has its own price and On sale switch: Free starts at 0. Work on a tier priced 0 goes straight to review when the creator sends it; any other price goes through checkout. Untick On sale to take a tier off the submit page (for example, to run without a free tier); drafts already on that tier keep it.
Ask AI puts ChatGPT, Perplexity, Claude, Gemini and Grok buttons on the work: over the card's image on hover or keyboard focus, and under the description on the work page. Each opens that service in a new tab with one fixed question filled in from the work itself: title, type, maker, tagline, the work's address and its LaunchBeacon page. The question follows the visitor's language.
Membership plans lists plans with monthly and yearly price, members and state. New plan or open one: name (up to 60 characters), address name (60, unique), tagline (160), monthly price (0–100,000), yearly price (0–1,000,000), order (0–999), on sale, mark as popular, and What it grants: tier discount (up to 100%), Boost credits per month, Spotlight credits per month, priority review, badge, analytics, followed profile link, directory featuring, profile cover, hire form and featured categories.
The plan list has a column for each gateway with automatic renewal, showing Synced or Needs sync; press the refresh button in that column to create or update the plan at the gateway. Do it again after changing a price; existing members keep the price they signed up at. Deleting a plan that members have used hides it from sale instead.
Coupons
View: codes with discount, what they apply to, uses, discount given, validity and state. New coupon: code (up to 40 characters: capital letters, numbers, dashes and underscores, unique), discount type (percent or fixed), value (0.01–1,000,000), applies to (everything, tiers or plans), uses in total and uses per member (blank for unlimited), start and end dates (end on or after start) and active. Open a coupon to edit it. Deleting a coupon that was used on orders switches it off instead.
Invoices
Invoices and credit notes with gapless numbers, billed to, order, total and issue date; filter by kind and search by number. PDF downloads one. Seller and tax opens the settings printed on them. Invoices cannot be edited or deleted.
Jury payouts
Revenue → Jury payouts. Jurors earn one payment of a set amount for every run of scores that count, as set under Settings → Jury: scores on paid listings only (Boost and Spotlight), or on paid and free listings. Scores are paid oldest first, and a change to the rate applies only to scores not paid yet. LaunchBeacon keeps the record; you send the money yourself.
- The top card shows the rate (for example $50.00 for every 100 paid listings scored), the amount due now and the amount paid this year. While jury pay is off, a warning says so and no payment can be recorded. Jury pay settings (owners) opens the settings page.
- What jurors are owed: every juror with unpaid scores that count, most owed first, with unpaid scores, payments due, amount due and their payout method with the account shortened, or Missing. Pay jumps to that juror's payment card.
- Payment card, one per juror with a payment due: the scores and payments it covers and the full payout details. Send the money, then add the payment reference (optional, up to 120 characters, such as the PayPal transaction ID) and a note only staff see (up to 1,000), and press Record payment (confirmation). Every whole run of scores is paid at once; those scores are marked paid and the juror gets an email and bell notification. A juror without payout details cannot be paid until they add them on their jury desk.
- Payments recorded: date, juror, scores, amount, method, reference and the staff member who recorded it, 25 per page.
Spotlight placements
Paid Spotlight work is pinned automatically. Pin a work adds a placement by hand: where (top of Nominees or the home Spotlight rail), the work (its number or public address), start (blank for now) and days (1–60), then Pin. Running and upcoming placements are listed with where, work and dates; ending a running one stops it now and deleting an upcoming one removes it. Ended placements appear below.
Newsletter
- Subscribers: confirmed, pending and unsubscribed tabs, search by email, and remove a subscriber. Sign-ups use double opt-in and every email carries one-click unsubscribe.
- Draft this week’s issue builds an issue from Spotlight work not featured in the last 120 days, the week's winners and work open for voting. It is refused when there is nothing to feature. It also runs by itself on Mondays.
- Edit issue: subject (up to 160 characters), opening lines (up to 2,000), untick works to remove them, add works by number or address, then Save, Preview and Send me a test. Send issue needs email set up and at least one work; sending goes out in batches of 500 a minute through the queue. A sent issue cannot be changed.
- Sending opens Settings → Newsletter to choose whether issues send themselves.
Social queue
Boost and Spotlight work adds a social post here, filtered by status and network. For each: edit the caption, Copy caption, download the Image, post it on your network, paste Link to the post (optional, up to 500 characters) and press Posted. Remove drops an item.
Inbox
Messages from the contact form in tabs for new, read, replied and archived. Opening one marks it read. Reply by email opens your mail app addressed to the sender, Mark replied, Archive and Delete (confirmation).
Staff and activity log
View: staff with role, house jury and last sign-in. Add staff: name (up to 120 characters), email (unique), password (at least 8 characters with letters and numbers), role and On the house jury, then Save; give the member their password (they can change it under their own profile). Open a member to change name, email, role, house jury or password (leave password blank to keep it).
Guards: you cannot remove your own account; there must always be at least one owner, so the last owner cannot be demoted or removed; a member who scored on the house jury, or whose account is tied to records that must be kept, cannot be removed (change their role or password instead).
Activity log lists staff actions with who, what, details, when and IP address, filtered by staff member and area.
Settings hub
Settings shows one card per page with its state (for example Ready, Not set up, Running, Maintenance on). Secret fields are never shown again after saving; leave them blank to keep the saved value, or tick clear to remove it.
Every settings page
| Page | Fields and rules |
|---|---|
| General | Tagline (120), contact email (contact messages, reports and staff alerts go here), time zone, date format, languages offered, default language (always kept in the offered list), currency (prices in the panel are labelled with its symbol, such as $), and Maintenance mode with its message (up to 300 characters). While maintenance mode is on, visitors and creators get a "Back soon" page with your message (HTTP 503, so search engines come back later); staff signed in to the panel still see the whole site, a bar in the panel says maintenance is on, and payments, webhooks, web cron and one-click unsubscribes keep working. |
| Branding | Site name (60), footer line (160; the field shows the line as it prints, such as "© 2026 LaunchBeacon", and the year and the site name in it stay current on their own), default theme, primary and secondary colours (hex such as #5A3FF0), heading and body fonts from the bundled list, logo and dark logo (PNG, JPG, WebP or SVG up to 1 MB), favicon (PNG, ICO, SVG or WebP up to 512 KB). |
| Payments | See Payment gateways. |
| Submissions and voting | Days voting stays open (1–60), jury votes needed (1–50), community votes that count (0–500), account age to vote (0–90 days), the four criteria weights (must add up to 100), the honorable mention threshold and upload limits. |
| Jury | Take jury applications (off: the Become a juror page says applications are closed; staff can still add jurors under Awards → Jury) and days before a declined creator can apply again (0–365). Pay jurors for scoring, scores per payment (1–100,000, for example 100 or 1,000), amount per payment in the store currency (0–1,000,000) and Scores that count: paid listings only (Boost and Spotlight) or paid and free listings. Changes apply to scores not paid yet. The settings card shows the rate, or Unpaid while pay is off. |
| Awards | Publish proposals nobody reviewed (on: unconfirmed proposals publish too) and publish time. |
| Tax and invoices | Tax rate %, tax label (for example VAT or GST), prices include tax; the seller's company name, address, tax ID and billing email; invoice prefix. |
| Email (SMTP) | Host, port (1–65535), encryption (STARTTLS or SSL/TLS), username, password, sender name and address. Send test email sends to you with the values in the form, before saving. |
| Scheduler | Cron status, the cron line and the web-cron address. |
| Captcha | Provider (off, Google reCAPTCHA v2 or Cloudflare Turnstile), site key and secret key. Used on the registration, password reset, contact and hire forms. |
| Google sign-in | Switch, client ID and client secret (from an OAuth client of type Web application in Google Cloud → APIs & Services → Credentials), and the presentation: Button puts Continue with Google on the log in and sign-up pages; One Tap shows Google's prompt on every page for signed-out visitors instead. Only one is offered at a time. The page lists the Authorized redirect URI to add to the client, and the Authorized JavaScript origin One Tap also needs. A first Google sign-in creates the creator account with the address already confirmed; unclaimed profiles and suspended accounts are refused. Staff always sign in with their password. The settings card reads Off, Button or One Tap. |
| SEO and analytics | Home title (70) and description (160), share image (JPG, PNG or WebP up to 4 MB; 1200 × 630 works everywhere), Google Analytics ID (G- followed by letters and numbers; loaded only after a visitor accepts measurement). |
| AI assistant | Provider (OpenAI, Anthropic or Google Gemini), API key, model (blank for the provider default), SEO and tag suggestions on submit, summaries for reviewers. Test connection checks the key. |
| Browser push | See Browser push. |
| Motion | Full, reduced or off, and smooth scrolling on home, awards and pricing. With full motion on a desktop screen, the home page hero also shows a 3D scene of floating award tokens; it is skipped on phones and tablets, with data saver on, and where WebGL is not available. Visitors who ask their device for less motion always get reduced motion. |
| Social links | Your profiles shown in the footer. |
| Newsletter | Whether the weekly issue sends itself or waits for an editor. |
Browser push
Browser notifications use the standard Web Push protocol with keys that belong to your site, so there is no third-party account to create.
- Open Settings → Browser push and press Create keys. The public key appears on the page; the private key stays on the server, encrypted.
- Switch on Send browser notifications, optionally enter a contact email for push services, and save.
- Creators turn notifications on per browser under Account → Notifications. Every bell notification then also appears as a browser notification.
Replace keys (confirmation) creates new keys; browsers that were turned on stop receiving notifications until each creator turns them on again. Push needs HTTPS (browsers allow localhost for testing).
How gateways work
Settings → Payments lists all 17 gateways with their switch, mode and capability chips (Recurring, Refund API, Webhook). Open one to enter credentials, choose Test or Live, press Test connection (it uses the values in the form, before saving) and copy its webhook address. Credentials are stored encrypted and never shown again; leave a secret blank to keep it.
- Checkout offers a gateway only when it is switched on, has its credentials and accepts the store currency.
- A payment is always confirmed with the gateway itself before an order is marked paid. Webhooks catch payments completed after the buyer closed the page and payments that confirm later (bank debits, crypto).
- Every webhook address has the form
https://your-domain/payment/{gateway}/webhook. It must be reachable over HTTPS. - Gateways without automatic renewal sell memberships as a prepaid month or year, with reminder emails 7 days and 1 day before the end.
- Gateways without a refund API are refunded in their own dashboard; then record the refund on the order.
- Use test credentials with Test mode and live credentials with Live; mixing them fails the connection test.
| Gateway | Checkout | Memberships | Refunds | Webhook setup | Currencies |
|---|---|---|---|---|---|
| PayPal | Buttons on the page | Automatic renewal | From the order | Button in LaunchBeacon | 24 major currencies |
| Stripe | Stripe Checkout | Automatic renewal | From the order | Stripe dashboard | All Stripe currencies |
| Braintree | Drop-in on the page | Prepaid term | From the order | Braintree control panel | Your merchant account currency |
| Square | Square payment link | Prepaid term | From the order | Square developer dashboard | USD, CAD, GBP, AUD, JPY, EUR |
| Mollie | Mollie checkout | Automatic renewal | From the order | Automatic | 28 currencies |
| Paystack | Paystack checkout | Automatic renewal | From the order | Paystack dashboard | NGN, GHS, ZAR, KES, USD, XOF, EGP, RWF |
| Flutterwave | Flutterwave checkout | Prepaid term | From the order | Flutterwave dashboard | NGN, USD, GBP, EUR, GHS, KES, UGX, TZS, ZAR, XAF, XOF, RWF, ZMW, MWK, EGP |
| PayU | PayU hosted page | Prepaid term | From the order | PayU dashboard | INR |
| SSLCommerz | SSLCommerz hosted page | Prepaid term | From the order | Automatic | BDT, USD, EUR, GBP, AUD, CAD, SGD, INR, MYR |
| aamarPay | aamarPay hosted page | Prepaid term | Record | Not used | BDT, USD |
| toyyibPay | toyyibPay bill page | Prepaid term | Record | Automatic | MYR |
| Skrill | Skrill Quick Checkout | Prepaid term | Record | Automatic | 35 currencies |
| GoCardless | GoCardless bank authorisation | Automatic renewal | From the order | GoCardless dashboard | GBP, EUR, USD, SEK, DKK, AUD, NZD, CAD |
| Amazon Pay | Amazon Pay button | Prepaid term | From the order | Seller Central | By region: USD (North America), EUR and GBP (Europe), JPY (Japan) |
| VR pay | VR pay hosted page | Prepaid term | Record | VR pay dashboard | CHF, EUR, USD, GBP |
| Cryptomus | Cryptomus invoice | Prepaid term | Record | Automatic | Any store currency, paid in crypto |
| Bank transfer | Instructions and proof upload | Prepaid term | Record | Not used | Any |
PayPal
- Fields
- Client ID, Secret, Webhook ID (filled by the register button)
- Test mode
- PayPal sandbox apps and sandbox buyer accounts
- Memberships
- Automatic renewal through PayPal subscriptions
- Sign in at
developer.paypal.com, open Apps & Credentials, choose Sandbox for testing or Live, and create an app (type Merchant). - Copy the Client ID and Secret into Settings → Payments → PayPal, choose the matching mode and press Test connection.
- Save, then press Register webhook. LaunchBeacon creates the webhook in PayPal and fills in the Webhook ID. The site must be reachable over HTTPS for PayPal to deliver events.
- Switch PayPal on.
- For memberships, open Pricing and plans → Membership plans and press the refresh button in the PayPal column of each plan until it shows Synced. Repeat after changing a plan's price.
- Buy a Boost submission with a sandbox Personal account from Sandbox accounts to confirm, then switch to Live with your live app's credentials, register the webhook again and sync the plans again.
On localhost PayPal cannot reach the webhook, but one-time payments still complete: the capture is confirmed with PayPal as soon as the buyer approves.
Stripe
- Fields
- Publishable key, Secret key, Webhook signing secret
- Test mode
- Test-mode keys (
pk_test_…,sk_test_…) - Memberships
- Automatic renewal through Stripe subscriptions
- In the Stripe dashboard open Developers → API keys and copy the publishable and secret keys (test or live).
- Open Developers → Webhooks, add an endpoint with the webhook address from LaunchBeacon and select the events
checkout.session.completed,checkout.session.async_payment_succeeded,checkout.session.async_payment_failed,invoice.paid,invoice.payment_failed,customer.subscription.updated,customer.subscription.deleted,charge.refund.updated,refund.createdandrefund.updated. - Copy the endpoint's signing secret (
whsec_…) into Webhook signing secret, test the connection, save and switch Stripe on.
Braintree
- Fields
- Merchant ID, Public key, Private key
- Test mode
- A Braintree sandbox account
- Memberships
- Prepaid term
- In the Braintree control panel open Settings → API, generate a key pair and copy the merchant ID, public key and private key.
- Under Settings → Webhooks create a webhook with the address from LaunchBeacon and select the transaction notifications.
- Enter the keys, choose the matching mode, test, save and switch Braintree on. The card form (Drop-in) appears on the checkout page.
Square
- Fields
- Access token, Location ID, Webhook signature key
- Test mode
- Square sandbox application credentials
- Memberships
- Prepaid term
- In the Square developer dashboard open your application, copy the access token (sandbox or production) and, under Locations, the location ID.
- Under Webhooks → Subscriptions add a subscription with the exact webhook address from LaunchBeacon and the events
payment.created,payment.updated,refund.createdandrefund.updated. - Copy its signature key into Webhook signature key (the signature is tied to that exact address), test, save and switch Square on.
Mollie
- Fields
- API key
- Test mode
- The test API key (
test_…) - Memberships
- Automatic renewal: a first payment creates a mandate, then Mollie charges each period
- In the Mollie dashboard open Developers → API keys and copy the test or live key.
- Enter it, test, save and switch Mollie on. No webhook setup is needed: LaunchBeacon sends its webhook address with every payment.
Paystack
- Fields
- Public key, Secret key
- Test mode
- Test keys (
pk_test_…,sk_test_…) - Memberships
- Automatic renewal through Paystack plans
- In the Paystack dashboard open Settings → API Keys & Webhooks and copy the public and secret keys.
- On the same page paste the webhook address from LaunchBeacon into Webhook URL (test and live have separate fields). LaunchBeacon uses
charge.success,invoice.update,invoice.payment_failed,subscription.disable,subscription.not_renewandrefund.processed, signed with your secret key. - Enter the keys, test, save and switch Paystack on.
Flutterwave
- Fields
- Public key, Secret key, Webhook secret hash
- Test mode
- Test keys from test mode in the dashboard
- Memberships
- Prepaid term
- In the Flutterwave dashboard open Settings → API Keys and copy the public and secret keys.
- Under Settings → Webhooks paste the webhook address from LaunchBeacon, set a secret hash of your choice and enable
charge.completed. - Enter the same secret hash in Webhook secret hash, test, save and switch Flutterwave on.
PayU
- Fields
- Merchant key, Salt
- Test mode
- PayU test credentials (test.payu.in)
- Memberships
- Prepaid term; INR only
- In the PayU dashboard open Developers → API keys (or the key and salt page for your account) and copy the merchant key and salt.
- Under webhooks add the address from LaunchBeacon for successful, failed and pending payments.
- Enter the key and salt, choose the matching mode, test, save and switch PayU on. The store currency must be INR.
SSLCommerz
- Fields
- Store ID, Store password
- Test mode
- A sandbox store from the SSLCommerz developer site
- Memberships
- Prepaid term
- Copy the store ID and store password from your SSLCommerz merchant panel (or the sandbox registration email).
- Enter them, choose the matching mode, test, save and switch SSLCommerz on. No webhook setup is needed: LaunchBeacon sends its IPN address with every payment and validates each one with SSLCommerz.
aamarPay
- Fields
- Store ID, Signature key
- Test mode
- aamarPay sandbox credentials
- Memberships
- Prepaid term; BDT or USD
- Copy the store ID and signature key from your aamarPay merchant panel (or the sandbox credentials aamarPay provides).
- Enter them, choose the matching mode, test, save and switch aamarPay on. There is no webhook: each payment is verified with aamarPay when the buyer returns. Refunds are made in aamarPay, then recorded on the order.
toyyibPay
- Fields
- User secret key, Category code
- Test mode
- An account on dev.toyyibpay.com
- Memberships
- Prepaid term; MYR only
- In toyyibPay copy your user secret key, then create a category and copy its category code.
- Enter both, choose the matching mode, test, save and switch toyyibPay on. The callback address goes with every bill automatically. Refunds are made in toyyibPay, then recorded on the order.
Skrill
- Fields
- Merchant email, Secret word
- Test mode
- A Skrill test merchant account
- Memberships
- Prepaid term
- In your Skrill merchant account open Settings → Developer settings, set a secret word and enable Quick Checkout for your account.
- Enter the merchant email and the same secret word, test, save and switch Skrill on. The status address goes with every payment automatically. Refunds are made in Skrill, then recorded on the order.
GoCardless
- Fields
- Access token, Webhook endpoint secret
- Test mode
- A GoCardless sandbox account
- Memberships
- Automatic renewal through Direct Debit subscriptions
- In the GoCardless dashboard open Developers → Create → Access token with read-write access and copy it.
- Under Developers → Create → Webhook endpoint add the address from LaunchBeacon and copy its secret. LaunchBeacon uses payment, refund, subscription and billing request events.
- Enter both, choose the matching mode, test, save and switch GoCardless on. Direct Debit payments take a few days to confirm; the order shows as processing until then.
Amazon Pay
- Fields
- Merchant ID, Store ID, Public key ID, Private key, Region
- Test mode
- Sandbox keys from Seller Central
- Memberships
- Prepaid term
- In Amazon Seller Central open Integration → Integration Central. Copy the merchant ID and the store ID (starts with
amzn1.application-oa2-client). - Create an API key pair, keep the downloaded private key file and copy the public key ID. Paste the whole private key, including its BEGIN and END lines.
- Choose the region that matches your account (North America, Europe or Japan; it sets the currency), add the webhook address from LaunchBeacon as the notification endpoint, test, save and switch Amazon Pay on.
VR pay
- Fields
- Instance, API key
- Test mode
- A VR pay test instance
- Memberships
- Prepaid term; CHF, EUR, USD or GBP
- In VR pay note your instance name (the part before
.vr-pay.ch) and create an API key under Integrations → API. - Under webhooks add the address from LaunchBeacon for confirmed transactions.
- Enter both, test, save and switch VR pay on. Refunds are made in VR pay, then recorded on the order.
Cryptomus
- Fields
- Merchant UUID, Payment API key
- Test mode
- Cryptomus has no separate sandbox; test with a small live amount
- Memberships
- Prepaid term
- In the Cryptomus merchant dashboard open Business → Settings → API, copy the merchant UUID and generate a Payment API key (not the payout key).
- Enter both, test, save and switch Cryptomus on. The callback address goes with every invoice automatically; orders stay processing until the network confirms the payment. Refunds are made in Cryptomus, then recorded on the order.
Bank transfer
- Fields
- Payment instructions, Ask for proof of payment
- Memberships
- Prepaid term
- Write the payment instructions (bank name, account, reference to use) and choose whether buyers must upload proof.
- At checkout the buyer sees the instructions and uploads the receipt (JPG, PNG, WebP or PDF up to 5 MB) with an optional note up to 500 characters. Admins are alerted.
- When the money arrives, open the order and press Confirm payment. The order is paid, the invoice is issued and the work enters review.
Emails
Every email uses your site name and colours. Each row links to a preview rendered with the demo content (open it in the browser; nothing is sent). Emails go out only when Settings → Email (SMTP) is set up; the same messages always appear in the bell, and in browsers where creators turned notifications on.
| Sent when | To | Creator switch | |
|---|---|---|---|
| Confirm your email | A creator registers or changes their email | Creator | Always sent |
| Welcome | The email is confirmed | Creator | Always sent |
| Reset password | A creator asks for a reset link | Creator | Always sent |
| Submission received | Work enters review (free, or after payment) | Creator | Review results |
| Changes requested | Staff request changes | Creator | Review results |
| Approved, voting open | Staff approve the work | Creator | Review results |
| Submission declined | Staff decline the work | Creator | Review results |
| Voting results | Voting closes | Creator | Voting results |
| Award won | An award is published (honorable mention, day, month, year, People's choice) | Creator | Awards |
| Changes approved | Staff approve a revision | Creator | Review results |
| Changes declined | Staff decline a revision | Creator | Review results |
| Link unreachable | The link check first fails for a live work | Creator | Review results |
| Payment receipt | An order with a total above zero is paid | Buyer | Always sent |
| Refund issued | A refund is made or recorded | Buyer | Always sent |
| Membership active | A membership starts | Member | Membership reminders |
| Membership renewed | A renewal is paid | Member | Membership reminders |
| Membership payment failed | The gateway reports a failed renewal | Member | Always sent |
| Membership cancelled | A membership is cancelled | Member | Membership reminders |
| Membership ended | A membership ends | Member | Membership reminders |
| Membership ending soon | 7 days and 1 day before a prepaid term ends | Member | Membership reminders |
| Hire request | Someone sends the hire form on a profile | Profile owner | Hire requests |
| Jury digest | Daily at 07:00 when new work opened for voting | Jurors | Jury digest |
| Jury reminder | Staff press Remind jurors | Jurors who have not scored | Jury digest |
| Jury application approved / declined | Staff decide a jury application | Applicant | Jury digest |
| Jury payment recorded | Staff record a jury payment | Juror | Always sent |
| Newsletter confirmation | Someone signs up for the newsletter | Subscriber | Always sent |
| Weekly newsletter | An issue is sent | Confirmed subscribers | Weekly newsletter (with one-click unsubscribe) |
| Staff password reset | A staff member asks for a reset link | Staff member | Always sent |
| Staff alert | See the list below | Staff whose role opens that area | Always sent |
Staff alerts go to staff whose role opens the area: a new paid submission and reviews due within two hours or overdue (review), a new report (review), a new contact message (inbox), award proposals ready (awards), a new jury application (awards), the weekly issue ready for an editor (marketing), a bank transfer to confirm (revenue), and five webhook failures in a row for a gateway (revenue). Recorded refunds add a bell alert for revenue staff, without an email.
Commands
| Command | Use |
|---|---|
php artisan launchbeacon:admin-password you@example.com | Set a new staff password when email is not working (add --password=… or get a random one). |
php artisan lb:awards-propose --kind=day --date=2026-09-13 | Propose winners for a specific day, month (--kind=month --date=2026-08) or year. |
php artisan lb:awards-publish | Publish confirmed proposals now. |
php artisan lb:voting-close | Close voting windows that have ended. |
php artisan lb:links-check --limit=50 | Check the links of live works now. |
php artisan lb:sitemap | Rebuild the sitemap. |
php artisan lb:translations es | Translation status for a language (see below). |
php artisan lb:installer-sql | For developers: rebuild public/installer/app_db.sql from a freshly migrated and seeded database. It refuses to export saved credentials. |
Languages and translations
LaunchBeacon ships in English, Spanish and Arabic (right to left, with an Arabic typeface). Choose the languages offered and the default under Settings → General; visitors switch language in the footer and signed-in creators keep their choice.
Every interface string lives in lang/es.json and lang/ar.json (plus lang/es and lang/ar for validation messages). To edit a translation, change the value next to the English text. The translation command helps keep files complete:
php artisan lb:translations es # how many strings are missing
php artisan lb:translations es --export=missing.json # write the missing strings with empty values
php artisan lb:translations es --import=done.json # merge a translated file
php artisan lb:translations fr --write # start a new language with English copies
php artisan lb:translations es --prune # remove strings the code no longer uses
To offer a new language, create its file with the command, then add its code and name to the language lists in config/settings.php and config/launchbeacon.php.
Updating
- Back up the database and the
storagefolder. - Switch on maintenance mode under Settings → General if visitors should not see the update in progress.
- Upload the new files over the old ones, keeping
.env,storageandpublic/storage. - Run
php artisan migrate --forceandphp artisan optimize:clear, thenphp artisan optimize. Switch maintenance mode off.
Troubleshooting
| Problem | Fix |
|---|---|
| Uploaded images do not show | Run php artisan storage:link, or create a link from public/storage to storage/app/public in your file manager. |
| Visitors see "Back soon" | Maintenance mode is on under Settings → General. |
| "Incorrect datetime value" errors for certain hours | Keep DB_TIMEZONE=+00:00 in .env; the database server is running on local time. |
| "This server cannot create keys" under Browser push | PHP's OpenSSL needs elliptic curve support. LaunchBeacon retries with its own resources/openssl/openssl.cnf; if it still fails, ask your host to enable OpenSSL with EC curves. |
| "The form has expired" or 419 errors | Check that APP_URL matches the address in the browser (including https) and clear the browser's cookies for the site. |
| Awards are not proposed, voting never closes, emails are late | Cron is not running. Check Settings → Scheduler. |
| Uploads are refused | PHP's upload_max_filesize and post_max_size must be above the image limits, and GD must support WebP. |
| A gateway is not offered at checkout | It must be switched on, have credentials and accept the store currency under Settings → General. |
| A buyer paid but the order is still pending | Open Payments → Webhooks for that gateway and Retry a failed event; check the webhook address in the gateway's dashboard. Bank transfers wait for Confirm payment. |
| Staff password lost and email not set up | Run php artisan launchbeacon:admin-password you@example.com on the server. |
FAQ
How are winners chosen?
By published rules: jury and community scores with fixed weights, an honorable mention threshold, then the best eligible work per day, month and year, confirmed by staff. See Voting, scores and awards.
Can a paid tier buy an award?
No. Boost and Spotlight buy a faster review and exposure (pins, newsletter, social post). Awards come only from the scores.
Can I stop winners from publishing without a person checking them?
Yes. Switch off Publish proposals nobody reviewed under Settings → Awards; then only proposals confirmed in the Awards desk are published.
Can I change prices, or add a fourth tier?
Prices and every tier benefit can be changed per type under Pricing and plans, and tiers can be taken off sale. The three tiers themselves (Free, Boost, Spotlight) are fixed.
Can I add another kind of work, such as plugins?
The four types (website, theme, app, game) can be renamed, given new award names or switched off under Types. A new kind with its own fields needs development.
What happens when a paid submission is declined?
The reviewer chooses whether its amount returns as store credit. A cash refund is made from the order under Orders.
Can creators change their work after it wins?
Yes, through revisions that staff approve. The title and address of an awarded work can only be changed by staff.
Why can't a visitor vote?
Community votes need a signed-in account with a confirmed email, at least 3 days old (setting), and never on the voter's own work. Voting must still be open.
How do I test payments before going live?
Use each gateway's test or sandbox credentials with Test mode, buy a Boost submission from a creator account, then check the order, invoice and payment in the staff panel. See PayPal.
How do I take the site offline for an update?
Switch on maintenance mode under Settings → General. Staff still see everything; payments and webhooks keep working.
Where are uploaded images stored, and what should I back up?
Uploads live in storage/app/public (served through public/storage); bank transfer proofs live privately in storage/app/private. Back up the database, the storage folder and .env.
Emails are not arriving. What should I check?
That Settings → Email (SMTP) sends a test email, that cron runs (emails go through the queue), and your mail server's spam and sender rules (SPF and DKIM for your domain).
Changelog
1.0.0
- First release.
Credits
LaunchBeacon is built on Laravel. Animation uses GSAP, the home page's 3D scene uses three.js, charts use Chart.js, icons are Lucide and fonts are self-hosted from Fontsource. The full list with licences is in THIRD-PARTY-LICENSES.md. Demo content, placeholder images and email preview content are original and fictional. Payment provider and store names are trademarks of their owners, used only to name the service a setting connects to.