// CASE STUDY · BNEI YEHUDA TLV
SPORTS · E-COMMERCE · OPSBnei Yehuda
A whole club.
In one system.
An official site, store and tickets for the fans — and a control room for the club's staff.
Bnei Yehuda Tel Aviv is a football club with 90 years of history, a loyal crowd and a whole neighbourhood behind it. The official site had to be the digital home of all that: the next match, results and the table, the squad, the news, the official store — and, at the same time, a real working tool for the people who run the club every day.
onezero built the site, the store and the management system: an SSR frontend, a league-data integration, a WooCommerce store with name and number printing, payments and invoicing, and an admin console for orders, fulfillment, printing, payment reconciliation, products, matches, tickets and users.


- league dataLIVEFixtures, results and the table from the league's API
- fulfillment7Stages from payment to hand-over — printing queue included
- match day8Categories in the checklist generated for every match
- roles4Owner · admin · printer · staff — permissions per page
// 01 · What we built
Three products. One club.
Fans see a site and a store. Staff see a control room. Behind both — one codebase, shared data sources and one visual language in the club's orange.
- 01FANS · SSR · LIVE DATA
The official site
The next match with a countdown, fixtures and results, the league table, the squad, news and gallery, a club page with a 3D trophy room, an all-time XI — all of it fast even when everyone logs on the same evening.
- 02WOOCOMMERCE · PAYPLUS
The official store
Match kits by season, the BYTLV lifestyle line, name and number printing with a live preview, coupons, delivery or club pickup, payment and an automatic invoice.
- 03ADMIN · OPERATIONS
The control room
A management system for the club's staff: orders, staged fulfillment, a printing queue with print-house exports, payment reconciliation, products and stock, match management with checklists, ticket distribution by SMS and users with permissions.
// 02 · The challenge
A football club
is also a small business.
Behind every match is a small team running a store, printing shirts, distributing tickets and coordinating buses and hotels — usually in spreadsheets, WhatsApp and memory. The system had to meet several demands at once:
- 01
Unify sources: news in WordPress, products in WooCommerce, league data from an external API, matches and tickets in our own database.
- 02
Hold match-day load — everyone checks the line-up and the score at the same hour.
- 03
Turn a printed shirt into a process: payment, printing, packing, shipping to the club, hand-over — without an order getting lost.
- 04
Give each staff member only what they need: the printer sees no prices and changes no orders.
- 05
Send tickets to fans, players and guests — no printing, no spreadsheets, and a record of who got what.
- 06
Feel like the club: orange, the lion, the stadium — and accessible to WCAG 2.0 AA.
And above all — every shekel collected has to match an order. No 'a payment went missing'.
// 03 · The solution
A match week.
Inside the system.
Instead of a feature list, we built the system around the club's real calendar. This is one week — from the moment the league publishes the round until the final whistle updates the table:
- 01
The match enters match management — manually or synced from the league fixture list — with date, stadium and broadcaster
- 02
A checklist is generated for home or away: logistics, operations, security and medical, teams and staff, crowd and tickets, match experience, media, post-match
- 03
Staff close tasks with structured fields — bus departure time, hotel confirmation, lists, attachments — and the control room shows what is still open
- 04
Ticket distribution: regular and VIP quotas, contacts by group, 'the regulars' in one click, and a PDF sent by SMS from the match's Drive folder
- 05
On the site: the next match with a countdown, a buy-tickets button, and the store takes the pre-match wave of orders
- 06
After the whistle: the result, the fixture list and the league table update from the league data — nobody types anything
- 07
Meanwhile in the store: the new orders move to the printing queue, the daily print-house list and the fulfillment stages
The next match, the table, the news and the store — on one screen, in the club's language: orange on black, the lion, the stadium.

// 04 · The store
A shirt with your name.
And a process behind it.
The official store runs on WooCommerce — but the fan never meets WooCommerce. They meet a fast store in club colours, organised by season, with the BYTLV collection and name-and-number printing you see on the shirt before you pay.
- 01A catalogue by season: 26/27, 25/26, 24/25 and classics
- 02BYTLV Collection — a lifestyle line with its own landing page
- 03Name & number printing: shirt templates, digit styles, live preview
- 04Server-side checkout with PayPlus and an automatic invoice
- 05Coupons — including WooCommerce free-shipping coupons
- 06Delivery or club pickup, customer e-mails at every step
- 07Stock per size, and product videos
- 08A server-side cache purged automatically when a product changes
// 05 · Fulfillment & printing
From payment to hand-over.
No order falls through.
Every paid order enters a seven-stage flow: printing (if needed), print done, awaiting shipment, shipped to the club, arrived at the club, handed to the customer. The state lives on the order itself in WooCommerce, with a full history — so there is no second database to keep in sync.
- 01Transitions only per an explicit table — no arbitrary jumps
- 02Optimistic locking: two people never overwrite each other
- 03Reverting a step — admin only, with a reason
- 04The printer sees only the printing queue, without prices
- 05A daily list and Excel export for the print house, a print sheet per order
- 06Orders board: a 30-business-day SLA, alerts on ageing orders
- 07Reconciliation: every PayPlus transaction against its WooCommerce order
- 08Manual orders from the admin — phone, counter, sponsor
// 06 · Match management
Every match
comes with a checklist.
Match management is the club's operational heart. A match is created manually or synced from the league fixture list and immediately gets a home or away checklist. Every task can carry structured fields — yes/no, time, quantity, table — notes and files, and rolls up to a completion rate visible from the control room.
- 01Sync from the league fixtures: opponent, date, stadium, round
- 02A home and an away template, frozen per match at creation
- 03Eight categories — from logistics to post-match
- 04Structured fields: bus, hotel, staff lists, parking, equipment
- 05Attachments, notes, autosave
- 06Waze and Google Maps to the stadium, broadcaster, preparing/done status
// 07 · Ticket distribution
A ticket by SMS.
Not on a slip of paper.
Every match has a quota of regular and VIP tickets — for players' families, management, sponsors, guests from the association. Until now it was managed in lists. Now it's a module: contacts by group, smart suggestions from previous matches, a 'regulars' row, and the ticket PDF sent straight to the phone.
- 01Home and away quotas, regular and VIP tickets
- 02Contact groups: players, families, management, sponsors, association and more
- 03The PDF comes from the match's Drive folder — no manual upload
- 04Sent by SMS via an Israeli provider, with Hebrew segment counting
- 05A personal ticket page on the phone that works even without JavaScript
- 06Export and data per match: who got what, when, how many
// 08 · The control room
BYTLV / Club Operations.
The management system has a brand of its own. Not another grey admin: warm cream for work surfaces, charcoal for navigation, club orange only for the primary action, Karantina for headings and the club's own icon family. The dashboard opens the morning with what matters: the next match, what needs attention, and where every order stands.

- 01
Permissions enforced on the server, not just in the UI
- 02
Four roles and a page list per user
- 03
Confirmation before every destructive action, unsaved-change guards
- 04
Ctrl+K: navigation, actions, open an order by number
- 05
A dashboard with the next match, 'needs attention' and fulfillment status
- 06
Works on the phone: tab bar, drawers, mobile forms
- 07
AA contrast, full RTL, numbers and e-mails in LTR
- 08
Tested with Playwright on every screen, at 3 breakpoints

// 09 · For the fans
The table updates itself.
The trophies — in 3D.
The public side of the site was built to feel like the club, not like a template. Sports data arrives automatically, and marketing content stays with the staff in WordPress — nobody has to touch code.
- Fixtures, results and table — from the league API, with a tidy empty state between seasons
- Next match: countdown, broadcaster, link to tickets
- The squad with a share screen per player
- A 3D trophy room (Three.js) with a timeline of titles
- All-time XI: the fan builds it, shares it as an image
- News and gallery from WordPress, management and staff pages, financial reports
- A 90th-anniversary splash
- An accessibility statement and WCAG 2.0 AA compliance
Same code, same colours — on desktop, on tablet and on a phone in the stands.
// 10 · Design & performance
Three principles.
- 01
Orange
One language for the site, the store and the admin: club orange, black, the lion and the stadium as a backdrop, Karantina for headings. Even the stock screen looks like Bnei Yehuda.
- 02
Fast on match day
Server-side rendering, a cache for everything that comes from WordPress, WooCommerce and the league, and automatic purges through webhooks when something changes. Even the admin is served from a warm cache.
- 03
Responsible
WCAG 2.0 AA accessibility with a full statement, server-side permissions, customer details hidden from whoever doesn't need them, and a history for every change to an order.
// 11 · The outcome
A site for the fans.
A system for the club.
bneiyehuda.co.il is now the club's digital home: the next match, results and table update on their own, the official store sells kits and lifestyle with personal printing, and the staff run orders, printing, matches and tickets from one control room — from the office computer or a phone in the stands.
The system keeps growing with the club: further modules for customers, coupons and content are already marked in the menu — on the same infrastructure, the same permissions and the same language.
// 12 · Technology & capabilities
What's under the pitch
One SSR application serves the site, the store and the admin — with data sources that each stay where they belong.
- FRONTENDReact Router 7 · React 19 · SSR
- DESIGNTailwind 4 with a brand token system
- COMMERCEHeadless WooCommerce: products, orders, coupons
- CONTENTWordPress for news and gallery
- DATASupabase/Postgres for matches, tickets and users
- PAYMENTSPayPlus: payments, IPN, invoices, reconciliation
- SPORTSLeague API: fixtures, results and table
- MESSAGINGSMS, e-mail and Google Drive for tickets
- OPSFulfillment flow with optimistic locking and history
- PRINTINGExcel exports and print sheets for the print house
- FANSThree.js for the trophy room, image sharing from the browser
- INFRAServer cache, purge webhooks, Docker
// 13 · Running a club, a league or a peak-day business?
From a marketing site
to a system that runs things.
We build sites that hold load, stores that sell, and management systems staff actually use — with permissions, processes and history. Let's build yours.
Orange. Fast. In order.



