
Updated
One offer, several people
NearYou connects people in Romania with local businesses and their offers. The public pages let visitors browse categories, offers, and business profiles. Behind that discovery experience are separate workspaces for customers, business owners, and administrators.
The architecture becomes easier to understand by following one offer. A business creates it, a customer claims it, and a member of the business validates it. Every interface needs to agree on what happened.
Next.js handles the interface and the API
NearYou uses Next.js and React for the interface, with TypeScript across the application. Its Node.js backend is implemented through Next.js route handlers. It is one application with server-side routes, plus separate Node.js processes for background workers and scheduled jobs.
Prisma connects the application to MySQL. Redis and BullMQ support queued work such as notifications and email campaigns. MinIO stores media, which the application serves through its own media routes. Stripe handles subscription payments, with webhook processing in the backend.
This arrangement keeps the offer rules and the interfaces in the same codebase while giving slower background tasks their own processes.

The public catalogue, captured on 19 September 2026.
Claiming an offer is a server operation
When a customer claims an offer, the backend checks authentication, eligibility, and limits. It rejects attempts by a business owner to claim their own offer. An idempotency key can identify a repeated request.
The important checks run again inside a database transaction with a row lock. That matters when two requests arrive close together: the decision needs to use the current database state, not the value a browser saw earlier.
Redemption has its own controlled state change. A business can scan the QR code or enter a code manually. The backend records the transition and uses a deduplication key when awarding loyalty points. Those mechanisms address repeat submissions at the point where data changes.
Each role sees its part of the work
Customers can manage claimed vouchers, follow businesses, and track points and notifications. Businesses manage profiles and offers, review claims, validate redemptions, and consult activity statistics. Administrators approve businesses and work with users, categories, content, campaigns, and support.

The public business page includes a dashboard preview. This is a capture of that page, not a private account session.
The same application data connects these areas. The customer needs a usable voucher; the business needs to know whether it is valid; the administrator needs tools to manage the platform.
Background work has a separate place
Sending a campaign or processing notifications should not occupy the request that displays a page. NearYou runs workers and scheduled jobs separately from the web process. Payment webhooks also have signature verification and recorded processing state to handle duplicate deliveries.
The system's complexity comes from these connected workflows. Next.js and Node.js provide the application structure; database transactions, role checks, and background workers define how the product behaves when people use it.
Explore NearYou · View the project
Architecture details come from the project source. Screenshots show the public website.