Lagonika
Greece's deals community — members post offers, vote, and discuss them on a platform built for that volume.
lagonika.gr
The Challenge
Lagonika runs on its members. People post deals from Greek and international shops, vote them up or down, and discuss whether an offer is real. The community already had tens of thousands of accounts from an earlier WordPress site. A theme-and-plugin CMS cannot hold the review queues, the permissions, and the live feed without bending the product around the CMS.
Our Solution
We split the product in two. Next.js is the site members use. Strapi is the API that owns offers, votes, comments, and the rules about who may publish. The public pages stay cached. Every write still has to pass the API.
How the community works
Anyone can read the feed and follow a discussion. An account is for taking part: post a deal, vote, reply, message someone, or get an alert when a kind of offer shows up.
What a person can do depends on how trusted the account is. A new offer can wait until someone has looked at it. People the community already trusts publish straight away. The people who look after the site can open deals that are not public yet, edit any of them, and decide what stays on the feed.
Posting and editing
Creating a deal and editing one use the same form. You describe the offer and add a photo. The API decides which parts of that you are allowed to change, and it records the post as yours.
People edit their own deals. The people who look after the community can edit any deal: when it goes live, where it sits in the feed, and whether the discussion and the outbound link stay open.
Comments and moderation
Comments sit on the deal, with replies, mentions, and votes. The person who posted it hears about new comments, and people can follow a thread they joined.
Publishing a comment is not something the writer chooses. Newer accounts start in review and earn the ability to comment live. An account can also be held back, or stopped from commenting, voting, or chatting. Offers and comments each have a queue, so something that should not be public can be held or removed.
Why a split system
The pages and the rules change for different reasons. The feed, the forms, and the chat ship as a Next.js app. Offers, votes, permissions, and moderation live in Strapi, on PostgreSQL. One API enforces the rules, so the website goes through the same checks as any other client.
That split fits a deals community. Voting, review, per-person limits, and real-time chat are the product. In a monolithic CMS they become plugins on a theme, and every page view carries them. Here they are the API. The site renders the result.
Speed
A classic CMS builds the page on every visit: the theme, the plugins, the post, the comments. Lagonika renders the public pages ahead of time. Anonymous visitors get a cached homepage, refreshed in the background so the next person is not waiting on the API. A deal page is regenerated about every 30 seconds. Logged-in traffic stays private, so one person's vote is never served from someone else's cache.
Search runs on Elasticsearch across the whole archive. Photos are stored on Amazon S3, served from the CDN, and resized by Next.js. The API only does the work that changes: a vote, a comment, a new offer, a moderation decision.
- 30,000+ members
- 2.8 million votes
- 290,000+ comments
