Now accepting new projects for Q3 2026

We build beautiful
products for ambitious teams.

MajidTek is a senior software development studio headquartered in Muscat. We design and engineer production-grade web and mobile platforms — secure, performant, built to last.

Trusted by government, F&B, legal and industrial teams across Oman.
plant-02 / live MajidTek S7 partner.orderorange.com OrderOrange intranet / emergency Emergency Management Platform
Live in production orderorange.com
On-premise & secure Government grade
Web + Android + iOS One codebase
8+
Products shipped
10+
Years experience
100%
Owned IP — your code
24/7
Support & SLAs
Selected work

Production apps, in the wild

A sample of what we've shipped recently. All built end-to-end by our team.

writer.majidtek.com
MajidTek Writer screenshot
Office productivity

MajidTek Writer

A Word-style word processor in the browser — ribbon, real pages, tables, comments, track changes, Arabic RTL and real .docx open and save.

JavaScript.docxArabic RTL
Read full case study
orderorange.com
OrderOrange screenshot
POS & Marketplace

OrderOrange

Free, open-source POS for restaurants, cafés and shops plus the food-ordering marketplace that comes with it — live at orderorange.com.

Customer sitePartner POS14 languages
Read full case study
plant-02 / local
MajidTek S7 screenshot
Industrial automation

MajidTek S7

Concrete-plant control: reverse-engineered PLC protocol, WPF plant client that starts the mixer, web dashboard, API and admin.

WPFSiemens S7Blazor
Read full case study
intranet / emergency
Emergency Management Platform screenshot
Government

Emergency Management Platform

On-premise national emergency platform — official telegrams, secure team chat, shared calendar, live map board, mobile app with push.

Blazor.NET MAUIOn-premise
Read full case study
food.majidtek.com
MajidTek Meals System screenshot
Institutional catering

MajidTek Meals System

Meal reservation and serving for institutions — daily menu, hall or parcel, collection confirmation, monthly quotas and 15+ reports.

Blazor ServerExcel reportsRole permissions
Read full case study
tgoman.majidtek.com
The Gate for Training Services screenshot
Education & Training

The Gate for Training Services

Bilingual website for an accredited Omani training centre — 15 courses with prices, booking, calendar, gallery and WhatsApp share previews.

BlazorMudBlazorArabic / English
Read full case study
law.majidtek.com
MajidTek Law screenshot
Legal

MajidTek Law

Case-management and client portal for law firms — secure document vault, time tracking, JWT-secured API.

.NET 10MudBlazorEF Core
Read full case study
reservations.majidtek.com
Hotel Reservation Manager screenshot
Hospitality

Hotel Reservation Manager

Admin-only PMS console for hotels that book offline — visual room board, fast reservations, folios, housekeeping.

.NET 10Blazor ServerMulti-tenant
Read full case study
Trusted across Hospitality Legal Food & Beverage Logistics Classifieds Real Estate Government
About us

Our expertise in programming

At MajidTek, we specialize in creating high-quality websites and mobile applications. Our team follows modern software development principles and practices to deliver scalable, maintainable, and efficient solutions tailored to our clients' needs. Here's what makes us stand out.

Object-Oriented Programming

We build modular, reusable, and extendable codebases using OOP principles such as encapsulation, inheritance, and polymorphism. This approach ensures flexibility and maintainability in our software solutions.

SOLID Principles

By adhering to the SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion), we create software architectures that are easy to scale and adapt over time.

Design Patterns

We utilize design patterns such as Singleton, Factory, Strategy, and Observer to tackle common challenges in software development effectively and ensure reusable, clean solutions.

Unit Testing with xUnit

Our commitment to quality is reinforced by writing automated unit tests using xUnit. This ensures that our software remains reliable, bug-free, and ready to handle real-world scenarios. With xUnit, we follow Test-Driven Development (TDD) practices, allowing us to catch potential issues early in the development process.

Clean Code Practices

Writing clean, readable, and maintainable code is a cornerstone of our development process. We emphasize simplicity and consistency in our coding standards to ensure long-term project success.

Agile Development

We embrace Agile methodologies to deliver incremental improvements while remaining flexible to accommodate evolving requirements and feedback from our clients.

Our mission

We engineer production-grade software platforms for businesses that demand reliability, security, and long-term maintainability. Combining senior engineering with a client-centred methodology, we deliver software that creates measurable, lasting impact — from emerging companies to established enterprises.

Services

Everything you need to ship a real product

From the first sketch to the final deploy, we own every layer of the stack so your team only worries about growth.

Web applications

Production-grade SaaS and dashboards built on Blazor, React, and .NET 10 — clean architecture, SOLID, fully testable.

  • Blazor Server / WASM
  • React, Angular, Next.js
  • EF Core, SQL Server

Mobile apps

Cross-platform Android & iOS apps that feel native, share a single codebase, and ship to stores without drama.

  • .NET MAUI / Flutter
  • Push, deep links, offline-first
  • Play Store & App Store publishing

UX & UI design

Human-centered design — research, wireframes, design systems, and pixel-accurate Figma handoff that engineers love.

  • Discovery & user research
  • Design systems & tokens
  • Prototyping & usability tests

APIs & backends

REST and real-time APIs, JWT auth, rate-limiting, and observability baked in from day one.

  • ASP.NET Core, Minimal APIs
  • OAuth 2.0, JWT, role-based access
  • OpenAPI & SDK generation

Cloud & DevOps

CI/CD pipelines, containerized deployments, monitoring, and zero-downtime releases on Azure, AWS, or self-hosted.

  • Docker & Kubernetes
  • GitHub Actions / Azure DevOps
  • Logging, metrics, alerting

Maintenance & support

SLA-backed retainers for ongoing fixes, performance tuning, and feature work after launch.

  • Tiered response SLAs
  • Monthly health reports
  • Security patching
UX / UI design

Designs that captivate and convert

Discover how our UX/UI design services create intuitive and engaging digital experiences that captivate users and drive results. We focus on innovation and creativity to deliver seamless designs tailored to your needs.

Creative design

We craft visually stunning designs that align with your brand identity and capture your audience's attention.

User-friendly interfaces

Our designs focus on usability, ensuring seamless navigation and a great user experience for all users.

Human-centered approach

We prioritize understanding user needs to deliver designs that are not only functional but also delightful.

Security

Our security practices

At MajidTek, we prioritize the security of your applications and data. Our team implements advanced security measures and follows industry best practices to safeguard your systems against vulnerabilities and cyber threats. Here's how we ensure robust security.

Token-Based Authentication

We use secure token-based authentication systems, such as JSON Web Tokens (JWT), to validate user sessions and prevent unauthorized access.

Injection Protection

Our applications are designed to prevent injection attacks (SQL Injection, Cross-Site Scripting, etc.) by using input validation, secure coding practices, and parameterized queries.

DDoS Mitigation

We employ rate-limiting, traffic filtering, and cloud-based solutions to protect your applications from Distributed Denial of Service (DDoS) attacks, ensuring high availability.

CPU Ring Security

Our systems are designed to align with CPU privilege rings, ensuring sensitive operations are restricted to the appropriate privilege levels and unauthorized access is prevented.

Kernel Mode Protection

We implement secure kernel-level processes, minimizing attack surfaces and safeguarding critical system resources against malicious threats.

Two-Factor Authentication (2FA)

We integrate 2FA solutions into applications, adding an extra layer of verification for user accounts, such as mobile authenticator apps or email codes.

Data Encryption at Rest

We encrypt sensitive data stored in databases or file systems, ensuring that even if access is compromised, the data remains unreadable without the decryption keys.

Regular Vulnerability Assessments

Our team conducts regular vulnerability scanning and penetration testing to identify and mitigate potential security weaknesses.

Secure API Practices

We follow strict API security guidelines, including OAuth 2.0 for authorization, rate limiting, and API key management to protect data exchange between services.

Role-Based Access Control (RBAC)

Our solutions implement RBAC to restrict access to sensitive areas of applications, ensuring users can only perform actions permitted by their role.

Monitoring and Logging

We set up advanced monitoring and logging mechanisms to detect and respond to security incidents in real time, ensuring prompt mitigation of threats.

Patch Management

Our systems are regularly updated with the latest security patches to address known vulnerabilities in software and dependencies.

HTTPS Encryption

All communications between clients and servers are secured using HTTPS, ensuring data is encrypted in transit and protected from eavesdropping or tampering.

Our stack

The tools we ship with every day

.NET 10
Blazor
MudBlazor
React
Angular
Next.js
TypeScript
SQL Server
PostgreSQL
Entity Framework
Docker
Kubernetes
Azure
AWS
GitHub Actions
Cloudflare
JWT
OAuth 2.0
.NET MAUI
Flutter
.NET 10
Blazor
MudBlazor
React
Angular
Next.js
TypeScript
SQL Server
PostgreSQL
Entity Framework
Docker
Kubernetes
Azure
AWS
GitHub Actions
Cloudflare
JWT
OAuth 2.0
.NET MAUI
Flutter
How we work

A simple, transparent process

Four phases, weekly demos, fixed-price discovery. No surprises, no scope creep.

01

Discover

Workshops, user interviews, and competitor research to nail down what we're really building.

02

Design

Figma wireframes, design system, and clickable prototypes you can test before a line of code.

03

Develop

Two-week sprints, weekly demos, automated tests, and code reviews on every PR.

04

Deploy

CI/CD pipeline, blue/green release, monitoring, and a 30-day hypercare window post-launch.

Product case study

MajidTek Writer — a full word processor that runs in the browser.

A Word-style editor with the familiar ribbon, real pages, styles, tables, pictures, headers and footers, comments and track changes — built entirely in HTML, CSS and JavaScript. Arabic and English sit side by side with proper right-to-left layout, documents autosave in the browser, and every file opens and saves as a real .docx. There is no server to run: copy the folder to IIS or any static host and it works.

Category
Office productivity
Users
Teams writing reports, letters and minutes
Languages
Arabic (RTL) and English in one document
Deployment
Static files — IIS or any web host
HTML CSS JavaScript Open & save .docx No build step Light & dark themes
writer.majidtek.com
MajidTek Writer — Arabic report
Inside the editor

Everything you expect from a word processor.

Every screen below is from the running app.

Right-to-left documents that look right
Arabic first

Right-to-left documents that look right

Arabic reports, letters and memos lay out correctly: right-aligned paragraphs, mirrored lists and tables, and Arabic and English mixed in the same line. A modern Arabic report template comes ready with a cover band, metadata, executive summary and a styled table.

  • Paragraph direction per paragraph
  • Arabic and English in one document
  • Ready Arabic report and letter templates
  • Status bar shows the active language
The ribbon people already know
The ribbon

The ribbon people already know

Home, Insert, Design, Layout, References, Review, View and Help tabs with clipboard, font, paragraph, styles and editing groups — the same layout as Word, so nobody needs training. A style gallery applies Normal, No Spacing and three heading levels in one click.

  • Fonts, sizes, colours and highlight
  • Bullets, numbering and multilevel lists
  • Style gallery with heading levels
  • Ruler with indent markers
Tables and pictures that behave
Tables and pictures

Tables and pictures that behave

Insert a table by dragging across a grid, convert text to a table or pick a quick table. Pictures get their own Picture Format tab with wrapping, alignment, styles, rotation, grayscale, alt text and captions, and resize with drag handles.

  • Grid picker, insert dialog and quick tables
  • Wrap text around pictures
  • Captions and alt text
  • Shapes, icons, text boxes and WordArt
Comments and track changes
Review

Comments and track changes

Leave comments on any selection and reply in threads, then resolve or delete them. With Track Changes on, insertions and deletions are marked in colour and can be accepted or rejected one by one. A navigation pane lists headings, pages and search results.

  • Threaded comments with resolve
  • Track insertions and deletions
  • Accept, reject, previous and next
  • Spelling, word count and read aloud
Real pages, margins and headers
Page layout

Real pages, margins and headers

Documents are laid out on real pages with margin presets or custom margins, orientation, size, columns, breaks and hyphenation. Headers and footers have their own tab with page numbers, date, document info and a different first page.

  • Normal, narrow, moderate and wide margins
  • Paragraph dialog with spacing and indents
  • Headers, footers and page numbers
  • Different first page
Find, replace and navigate
Find and replace

Find, replace and navigate

A side pane finds every match with match-case and whole-word options, steps through results and replaces one or all. Matches are highlighted in the page as you move through them.

  • Match case and whole words
  • Previous, next, replace and replace all
  • Result counter
  • Highlights in the document
Read mode, focus and dark mode
Views and themes

Read mode, focus and dark mode

Switch between print layout, web layout, outline and draft, open a distraction-free read mode, or turn on dark mode for the whole app. Zoom, one-page and page-width views and a pages overview make long documents easy to move through.

  • Print, web, outline and draft views
  • Read mode and focus mode
  • Light and dark themes
  • Zoom and pages overview
Open and save real Word files
Files and export

Open and save real Word files

A File backstage greets you with templates and recent documents, and opens .docx, .html, .md or .txt by drag and drop. Documents autosave in the browser and export to PDF, Word (.docx), web page, Markdown, plain text or a full-fidelity Writer backup.

  • Templates: report, letter, minutes, Arabic
  • Open .docx, .html, .md and .txt
  • Export to six formats
  • Autosave with recent files
Every screen

All 15 screens

Tap any screen to open it full size.

0
Servers or databases to run
6
Export formats, from PDF to .docx
2
Languages and directions in one document
100%
Autosaved — nothing lost on refresh
Featured product

OrderOrange — a POS and food-ordering marketplace for restaurants, cafés and shops.

One API, one shared menu, and five front ends: a customer ordering site, a partner app that is a full point of sale, an admin console, a rider app and a tablet till for older devices. Any country, any currency, fourteen languages — and it is live today at orderorange.com.

Industry
Restaurants, cafés, retail
Users
Customers, owners and staff, riders, platform admins
Languages
14 languages, RTL and LTR
Status
Live, free and open source
.NET 10 Blazor Server + WebAssembly ASP.NET Core API YARP SQL Server ESC/POS Google sign-in
partner.orderorange.com
OrderOrange — partner dashboard
Inside the partner app

Everything a shop needs, in one login.

Every screen below is from the live partner app. Several businesses can sit under one login, each with its own stock, staff and reports.

A till that keeps up with a busy counter
Point of sale

A till that keeps up with a busy counter

Tables, rooms and a floor plan, walk-in sales, open tabs, cash and card, split by rounds. Keyboard shortcuts and a code box ring items in seconds, and a POS assistant understands plain sentences in several languages.

  • Code box: 5*3 rings item No. 5 three times
  • Command palette and keyboard shortcuts
  • Lighter tablet screen for old devices
  • Receipts and pay terminal through the counter companion
Accept, prepare, hand over
Live orders

Accept, prepare, hand over

Online, QR-table and counter orders land on one live board. Staff accept or reject with one tap, and the kitchen display ages tickets from white to amber to red so nothing is forgotten.

  • Board updates itself — new orders appear at the top
  • Filters by status: new, preparing, ready, on the way
  • Kitchen display with bump and per-line ticking
  • Product printers: drinks to the bar, grills to the kitchen
Your own riders, tracked live
Delivery

Your own riders, tracked live

Assign a rider, route the drop, share a live location link with the customer and mark delivered — all from the same board the counter already uses.

  • Rider app with live tracking
  • Cash or card on delivery
  • Share live status link with the customer
  • Pickup, delivery and reservations on one menu
A QR code per table
QR ordering

A QR code per table

Guests scan, see the menu in their own language and order from their phone. Orders land on that table's bill, and the guest can message the counter without calling a waiter.

  • Printable QR sheet per table and room
  • Table chat between guest and counter
  • Signed bill-verification QR on every receipt
  • Reservations arrive from the same QR
Bookings without the phone tag
Reservations

Bookings without the phone tag

Table bookings come in from the customer site and the table QR, with party size, time and a phone number. Confirm, seat or cancel in one tap, with history kept for repeat guests.

  • Confirm and seat from the list
  • History toggle for past bookings
  • Customer list, discount codes and loyalty tiers
  • Surveys after the visit
One menu, fourteen languages
Menu and stock

One menu, fourteen languages

Categories, products, options, photos, prices, discounts and availability windows. Recipes consume raw materials on every sale, purchasing works by barcode, and a warehouses map handles transfers between branches.

  • Names and descriptions in 14 languages
  • Recipes, suppliers, receiving and waste write-offs
  • Invoices with an immutable audit trail
  • Reports with Excel export and A4 print
5
Front ends on one API and one shared menu
14
Languages for menus, names and descriptions
0
Passwords on production — Google or an emailed code
Free
Open source, any country, any currency
Industrial case study

MajidTek S7 — starting a concrete plant from modern software instead of a 1990s desktop program.

A batching plant was locked to a legacy Visual Basic program that spoke a proprietary telegram protocol to its Siemens-compatible PLC. We reverse-engineered the protocol from live captures, built a .NET 10 plant client that reads the plant and sends production orders, and put a web dashboard, API and admin panel on top — the mixer now starts from our software.

Industry
Construction materials — ready-mix concrete
Hardware
VIPA Speed7 PLC (S7-300 class), ELBAMATIC plant
Users
Plant operators, production managers, owners
Milestone
First app-driven batch on the live plant, August 2026
.NET 10 WPF AGLink (S7) Blazor ASP.NET Core API SQL Server Legacy Access migration xUnit
MajidTek S7 — production control
MajidTek S7 — production control with live weighing and dosing
How it works

From undocumented bytes to a running mixer.

No vendor documentation existed. Everything below was proven against the live plant, and every protocol rule is locked in by automated tests that assert on real captured bytes. Screens are from the real system; client and customer details are blurred.

Decoding a mailbox protocol nobody documented
Protocol reverse-engineering

Decoding a mailbox protocol nobody documented

The PC and the PLC exchange fixed-layout telegrams through one data block: a two-letter command, a length, and a payload of weights, silo numbers and mixing times. We captured live traffic, decoded the layout field by field, and found the encoders the decompiled legacy code had misled us about. The PLC log shows every poll and fault next to the raw telegram.

  • Seven command types, every length confirmed live
  • Handshake: the PLC blanks the command bytes when it consumes a telegram
  • Live PLC log with faults, warnings and decoded scale values
  • Live data overrules the decompile — a rule we learned the hard way
Every scale, live, on the way to the mixer
Weighing and dosing

Every scale, live, on the way to the mixer

Aggregate, filler, silica, water, additive and ice each get a live card with fill level, weight, target and the difference per material. Animated lines show what is flowing to the mixer, and mixing time, mixer gate and moisture correction sit right below.

  • Six scales with target versus actual per material
  • Flow lines to the mixer that follow the real dosing
  • PLC faults shown as a banner, acknowledged with F8
  • Mixing time, gate opening and concrete temperature
A start makes real concrete, so every gate is explicit
Safety

A start makes real concrete, so every gate is explicit

Starting the mixer from outside the plant is disarmed by default; an admin arms it for a fixed window and it disarms itself when the timer ends. Each plant has its own token, and the client writes the order body first and the command bytes last so the PLC never acts on a half-written order.

  • Remote start disarmed by default; arm for 15 minutes to 8 hours
  • Per-plant token for the plant client
  • Confirmation listing every weight, then a fresh re-read
  • Preview mode that writes nothing to the PLC
Silo levels for every material
Material stock

Silo levels for every material

The plant client pushes live values to a REST API, and the stock view shows every aggregate, cement, water and additive silo with its level and running balance. Production data reaches the browser from anywhere, backed by SQL Server with JWT security.

  • Aggregates, filler, water and additive silos at a glance
  • Running balance per silo, updated from the plant
  • Warning when production data is not being transmitted
  • Legacy Access database migrated to SQL Server
Recipes and machine timings, editable in one place
Recipes and timings

Recipes and machine timings, editable in one place

Concrete recipes carry strength class, water-cement factor, mixing and dry-mixing times and the weight per cubic metre for every aggregate, filler, water and additive — imported from the old system. The batching and mixer timings that the PLC uses are edited in the same app.

  • Recipes imported from the legacy recipe file
  • Admixture dosed as a percentage of cement weight
  • Batching times per material: aggregates, cement, water, additive, ice, silica
  • Mixer gate and discharge timings
Design the printed delivery ticket visually
Delivery tickets

Design the printed delivery ticket visually

Plants print onto pre-printed paper, so the ticket designer lays every field — ticket number, customer, site, mix, quantities, truck, driver and the materials table — over a scan of the real form, in millimetres, and saves it per plant.

  • Drag fields onto the ticket, show or hide each one
  • Millimetre rulers, zoom and undo
  • Paper size and background per ticket template
  • Only the black text is printed — the form is already on the paper
dotnet test 56 passed
✓ PutL_matches_the_live_plant_big_endian
✓ Real_EL_start_telegram_decodes_field_for_field
✓ LooksLikeOrder_accepts_a_real_order_and_rejects_everything_else
✓ MailboxReady_accepts_spaces_and_zeros_but_not_a_command
✓ BuildAck_matches_the_captured_EQ_telegram
✓ DosingOffsets_cover_every_weight_channel
… 50 more
Verification

Tests that assert on real captured bytes

Industrial code cannot be tested by trial on the plant. The protocol codec is pure and fully covered: the real start telegram decodes field by field, the encoders reproduce eight captured weights exactly, and two bugs that once cost days can never return.

  • Pure codec with no PLC dependency
  • Captured telegrams archived with decoded notes
  • A backup of the exact build that started the plant
  • 14-page technical documentation handed over
1
Live plant started from the new software
7
PLC command types decoded and verified
56
Automated tests, all green
0
Vendor documentation needed
Government case study

A national emergency-management platform that runs entirely inside the client's network.

Built for a national emergency-management centre in Oman: one Arabic-first platform for official telegrams, secure team chat, a shared calendar, a live map board and an Android and iOS app with push notifications — plus an admin console that shows who is online and from which device. It is deployed on-premise behind the organisation's own gateway; nothing leaves their network.

Sector
Government — emergency management
Users
Operations centre, sector teams, field teams, admins
Deployment
On-premise, behind the client gateway
Channels
Web, Android and iOS app, push notifications
.NET 10 Blazor .NET MAUI SignalR EF Core SQL Server OneSignal Google Maps Offline Arabic NLP
intranet / emergency / chat
Emergency management platform — group chat
Inside the platform

Every channel the centre uses, in one system.

Every screen below is from a demo build of the real product, filled with demo users and demo data. Nothing here is real operational information.

Official telegrams with a full paper trail
Official telegrams

Official telegrams with a full paper trail

Formal dispatches between the centre and the sectors: inbox, outbox, drafts and a file archive. Every telegram carries its sender, organisation and time, keeps its replies as a thread, and records exactly who received and read it.

  • Smart search by title, sender, organisation or date
  • Reply chains with attachments
  • Delivery and read receipts per recipient
  • Forward to another sector in one click
Secure chat that lives inside the system
Team chat

Secure chat that lives inside the system

Groups and direct chats over SignalR with read receipts, starred messages, files, links and media tabs, voice notes and audio or video calls. Operations summaries and calendar events arrive as rich cards straight in the conversation.

  • Group, direct and new-chat flows with member management
  • Files, media, links and starred messages per chat
  • Calendar and situation-summary cards inside messages
  • Same conversation on web and mobile
One calendar for the whole centre
Calendar

One calendar for the whole centre

Meetings, drills, field visits and reports on a shared monthly view with a day list beside it. Events can be shared into a chat as a card, and every change notifies the people involved on web and phone.

  • Colour-coded events with time and description
  • Share an event into any chat
  • Change notifications and reminders at event time
  • Filter by date, open from the notification bell
Draw the situation on a live map
Map board

Draw the situation on a live map

A drawing board over satellite imagery: shelters, relief centres, warehouses, assembly points and dams as toggleable layers, plus freehand drawing, shapes, arrows, labels and measurements. Save a board and share it with the team.

  • Layers with counts: 1,600 shelters, warehouses, dams and more
  • Freehand, shapes, arrows, text, colour and opacity
  • Distance and area measurement tools
  • Save and share boards; live mode for the operations room
Who is online, and from where
Users and devices

Who is online, and from where

The admin console shows live user activity — who is connected, their last page and their history — and a login and device log with browser, OS, device model and IP. Each user can see and sign out their own linked devices.

  • Live connected / disconnected counts and ratio
  • Login and device log: browser, OS, model, IP
  • Linked devices per user with remote sign-out
  • System log and an API explorer for integrators
Mobile app

Android and iOS, from one codebase

A .NET MAUI hybrid app shares the same UI library as the web, so every page ships once. Home, services, chat, telegrams, calendar and notifications all work from the phone, with push for every event and a share target for photos.

  • Push for chat, telegrams, calendar changes and reminders
  • Home-screen shortcuts and a widget with live counters
  • Share a photo from the gallery straight into a chat
  • Works with older servers — features degrade gracefully
Home and services
Home and services
Chat with situation card
Chat with situation card
Telegrams inbox
Telegrams inbox
Notifications
Notifications
100%
On-premise — no data leaves the network
3
Clients from one UI codebase: web, Android, iOS
5
Channels in one place: telegrams, chat, calendar, map, push
0
External AI services — the assistant runs offline
Featured case study

MajidTek Meals System — meal reservation and serving for institutions.

An Arabic-first admin panel that runs an institutional dining hall from end to end. Staff plan the daily menu, record each member's breakfast, lunch and dinner for the hall or as a parcel, and confirm who collected their meal. Behind that sit monthly mandatory quotas, booking windows, a catalogue of meals, extras and raw materials, and more than fifteen printable reports with Excel export. Every invoice change is audited, and every screen is guarded by per-user permissions.

Industry
Institutional catering
Users
Counter staff, kitchen, finance, administrators
Meals
Breakfast, lunch and dinner — hall or parcel
Language
Arabic (RTL) first
.NET 10 Blazor Server MudBlazor SQL Server JWT Excel export Per-screen permissions
food.majidtek.com
Control panel
Inside the admin panel

From today's menu to the monthly report.

Every screen below is from the real admin panel, filled with test members and test data.

Plan each day's breakfast, lunch and dinner
Daily menu

Plan each day's breakfast, lunch and dinner

Pick a date and choose the dishes offered for each meal, up to the limit set for that meal. The menu is saved per day and feeds the counter, the collection list and the kitchen reports.

  • Separate lists for breakfast, lunch and dinner
  • Dish limit per meal, shown as you pick
  • Saved state visible at a glance
  • One menu per date
Tick off every meal as it is collected
Meal collection

Tick off every meal as it is collected

For the chosen day and meal, every dish lists the members who booked it with their service and membership numbers. Staff tick each member as they collect, or mark a whole dish at once, and the counters show what is still waiting.

  • Grouped by meal, then by dish
  • Select all or clear all per dish
  • Collected, waiting and total counters
  • Quantity badges for double portions
Each dish tagged to the meals it belongs to
Meals catalogue

Each dish tagged to the meals it belongs to

Define dishes with Arabic and Latin names, barcode, description, price and cost, and tick whether each is served at breakfast, lunch or dinner. The daily menu only offers dishes that fit.

  • Breakfast, lunch and dinner tags
  • Price and cost side by side
  • Custom display order
  • Search across the catalogue
Drinks, snacks and sides, priced per unit
Additions and extras

Drinks, snacks and sides, priced per unit

Two catalogues sit beside the meals: additions such as drinks, juices and sandwiches, and extra sides such as rice, salad, soup, sauces, dates and fruit. Each has a unit, sale price and optional barcode, and can be switched off without deleting it.

  • Separate additions and extra-side lists
  • Unit, sale price and barcode
  • Enable or disable instantly
  • Search by name or barcode
Track what the kitchen consumes
Raw materials

Track what the kitchen consumes

Rice, chicken, fish, meat, lentils and saffron are registered as raw materials with a type, unit and, where packed, items per unit and item price. Units of measure and material types are managed as their own lists.

  • Material type and unit
  • Items per unit and item price
  • Units of measure: kilogram, gram, carton
  • Feeds the additions and meals report
Monthly minimum meals for every member
Mandatory quotas

Monthly minimum meals for every member

Set the mandatory number of meals and the unit price for a month and apply it to every member in one step. Exemption periods are recorded per member with a reason, and the quota report shows each member's commitment for the month.

  • Bulk add for all members
  • Edit or delete a month
  • Exemptions with a reason
  • Quota report with print and Excel
Control when each meal can be booked
Booking windows

Control when each meal can be booked

Define opening and closing times for every meal on every day of the week. Windows are grouped by meal, can be switched on or off, edited inline and filtered by meal type.

  • Per meal, per weekday time ranges
  • Enable or disable instantly
  • Grouped by breakfast, lunch and dinner
  • Search and filter by meal type
The whole period in one dashboard
Reservations overview

The whole period in one dashboard

Total bookings split into hall and parcel, parcel cost and the period's grand total, then breakdowns by meal type, the members who booked most and bookings day by day. A detailed monthly sheet lists every invoice with its counts and values.

  • Hall, parcel and total cards
  • By meal type and top members
  • Daily bookings with totals
  • Recipient details for collected parcels
Tell the kitchen exactly what to prepare
Hall and parcel sorting

Tell the kitchen exactly what to prepare

One list for the day: every member, their meal, their dishes and extras with quantities, and whether they eat in the hall or take a parcel. Filter by meal type, dish or serving mode, then print parcel coupons or export.

  • Dishes and extras with quantities
  • Hall and parcel badges
  • Parcel coupon printing
  • Printable paper daily sheet
The whole month on one grid
Monthly attendance

The whole month on one grid

A day-by-day grid of meals, extras and add-on dishes for every member, colour-coded and totalled per day and per member, with the month's meal count and extras value underneath.

  • Meals, extras and add-ons per day
  • Daily and member totals
  • Month summary of members, meals and values
  • Print and Excel export
Every invoice change, before and after
Audit trail

Every invoice change, before and after

Edits and cancellations are never silent. The invoice-edits report shows who changed which invoice and when, with the total before and after, and the cancelled-invoices report records the reason and the user for every cancellation.

  • Before and after totals
  • Who changed it and when
  • Cancellation reason per invoice
  • Filter by period, export to Excel
Fine-grained roles for every user
Users and permissions

Fine-grained roles for every user

Each user gets add, edit, delete and view rights on every screen, managed in one searchable tree with select-all and change counters. Service accounts can be hidden, and every user keeps a profile with their own password.

  • Add, edit, delete and view per screen
  • Searchable tree with expand and collapse
  • Hidden users for service accounts
  • Profile page with password change
Run it your way and keep it safe
Settings, backup and monitoring

Run it your way and keep it safe

Set the parcel fee, the mandatory booking price, the system name and its logo. Schedule automatic database backups or run one now, and watch a live monitor of logins, pages visited and invoices recorded for every user.

  • Parcel fee and quota price
  • System name and logo on every printout
  • Scheduled and on-demand backups
  • Live user monitoring with auto refresh
Every screen

All 37 screens of the admin panel

Tap any screen to open it full size.

3
Meals a day — breakfast, lunch and dinner
15+
Printable reports with Excel export
69
Individual permissions per user
100%
Invoice edits and cancellations audited
Website rebuild

A modern, bilingual website for an accredited Omani training centre.

The Gate for Training Services in Muscat teaches American Heart Association life-support courses and Highfield food-safety and HACCP qualifications. Their old WordPress site was Arabic-only, its English pages returned errors, and the calendar and gallery were empty. We rebuilt it from scratch as a fast .NET app: Arabic and English switched live, all fifteen courses with prices and certificates, booking, a working calendar and gallery, rich link previews for WhatsApp, and a design built for phones first.

Sector
Education — health and safety training
Audience
Trainees, companies and government bodies in Oman
Languages
Arabic (right-to-left) and English
.NET 10 Blazor Server MudBlazor SignalR RTL / LTR Open Graph CSS motion IIS
tgoman.majidtek.com
The Gate for Training Services — home page
Inside the site

From course search to booked seat, in both languages.

Every screen below is from the live site. Course names, prices and accreditations are the centre's real catalogue.

Arabic and English, one click apart
Bilingual

Arabic and English, one click apart

Arabic is the default and reads right-to-left; English flips the whole layout to left-to-right on the spot. The choice is remembered, so the next visit opens in the right language straight from the server.

  • Live switch with no page reload
  • Language remembered and rendered by the server
  • Phone numbers and emails always read left-to-right
  • Arabic and Latin fonts paired for both scripts
Fifteen courses, easy to find
Course catalogue

Fifteen courses, easy to find

Medical, HACCP, food safety and environmental health courses with their real prices, hours and awarding body. Visitors filter by category, search by name and sort by price or popularity.

  • Category chips, live search and sorting
  • Cards with price, duration and accreditation
  • Courses menu in the header with counts per category
  • AHA and Highfield accreditation on every card
From course page to booked seat
Booking

From course page to booked seat

Each course has its own page with content, certificate and target audience in tabs, and a price card that stays in view. One click opens a booking form, or a WhatsApp chat already filled with the course name.

  • Tabs for course content, certificate and audience
  • Sticky price card with duration, language and venue
  • Booking dialog with validation
  • WhatsApp enquiry with the course pre-filled
Upcoming sessions at a glance
Calendar

Upcoming sessions at a glance

A month view highlights the days with training sessions; picking a day lists its courses with time, venue, price and seats left. On the old site this page was empty.

  • Month view with highlighted session days
  • Timeline of sessions with seats left
  • Sunday-to-Thursday working week
  • Arabic digits and month names in Arabic mode
Training photos in a full-screen viewer
Gallery

Training photos in a full-screen viewer

Photos from courses and workshops open in a full-screen viewer with captions, a counter and keyboard navigation. If any photo ever fails to load, a branded placeholder takes its place instead of a broken image.

  • Full-screen viewer with previous / next and Escape
  • Captions and photo counter in both languages
  • Branded placeholder for any broken image
  • Lazy loading keeps the page fast
Recovers on its own, looks good when shared
Reliability and sharing

Recovers on its own, looks good when shared

If the connection drops, a branded overlay reconnects automatically, retries when the visitor returns to the tab or comes back online, and the server keeps the session for ten minutes. Links shared in WhatsApp, Facebook or Telegram show the logo, title and description.

  • Bilingual reconnect overlay with automatic retries
  • Session kept for ten minutes after a drop
  • Share cards with logo, or the course photo on course pages
  • Answers link-preview bots correctly
Mobile

Designed for the phone first

Most visitors arrive from WhatsApp on a phone, so the phone layout got its own pass: a compact top bar, a slide-in menu with the course categories as a tree, smaller type, and lighter effects so scroll animations start instantly.

  • Slide-in menu with phone and WhatsApp shortcuts
  • Course categories shown as a tree with connector lines
  • Reveal animations tuned to fire as soon as content enters the screen
  • No sideways scrolling on any page
Home
Home
Menu with course tree
Menu with course tree
Course categories
Course categories
Course price and booking
Course price and booking
15
Courses online with prices, duration and accreditation
2
Languages, switched live without reloading
11
Pages rebuilt, from home to course detail
10 min
A dropped visitor can return and rejoin their session
Featured case study

MajidTek Law — a complete practice-management platform for modern law firms.

A bilingual (Arabic / English), RTL-first case-management system built for law firms in Oman and the wider GCC. It replaces the spreadsheet-and-WhatsApp chaos most firms still run on with one secure platform that tracks every case, hearing, client, payment, and document from intake to closure.

Industry
Legal services
Users
Partners, lawyers, paralegals, finance, admin
Language
Arabic (RTL) + English
Deployment
Multi-tenant SaaS or on-premise
.NET 10 Blazor Server MudBlazor EF Core SQL Server JWT Role-based access
law.majidtek.com/dashboard
MajidTek Law — dashboard
Inside the platform

Seven modules. One unified workflow.

Every screen below is from a real production build. Tap into what each module does and who uses it.

Every case, fully tracked
Case management

Every case, fully tracked

The heart of the platform — a single source of truth for every active and closed case. Lawyers can find any case in seconds by client, court, type, or status.

  • Auto-numbered case IDs (CASE-2026-001 …)
  • Smart filters by status, court, opponent, attorney
  • Color-coded status badges (open, pending, closed, won, lost)
  • Linked clients, hearings, documents, invoices
Open a file in five guided steps
New-case wizard

Open a file in five guided steps

A step-by-step intake wizard makes opening a new case foolproof — even for staff who joined yesterday. Clients, parties, fee agreements, opening invoices, and documents are captured in one flow.

  • 5 ordered steps: client → details → parties & fee → opening invoice → documents
  • Reuses existing clients or creates new ones inline
  • Validates required fields before allowing next step
  • Saves draft progress between steps
Never miss a hearing again
Court hearings

Never miss a hearing again

Centralized hearings register with full agenda details — judge, courtroom, time, opposing counsel — plus automated reminders for the lawyer assigned.

  • Calendar + list view with filters by case, court, lawyer
  • Each hearing linked to its case and assigned attorney
  • Judge and courtroom captured for compliance records
  • Reminders and post-hearing notes
Office meetings, organized
Client appointments

Office meetings, organized

Separate from court hearings — track every in-office or call meeting with clients, with status (planned, completed, cancelled, no-show) and outcomes.

  • Visual day/week view
  • Link an appointment to one or many cases
  • Confirmation status tracking
  • Optional SMS / email reminders
Bill clients, follow up automatically
Invoices & payments

Bill clients, follow up automatically

Issue invoices in one click from the case file. Track payment progress with running balance bars, accept partial payments across multiple methods, and see overdue invoices at a glance.

  • Multi-method installments (cash, transfer, cheque, card)
  • Status auto-derived from paid amount (open, partial, paid, overdue)
  • Excel export for accounting handoff
  • Per-client and per-case revenue breakdown
Full client KYC and history
Clients

Full client KYC and history

Every client has a profile page that lists their cases, hearings, appointments, invoices, and contact details — the whole relationship at a glance, including nationality and ID details for KYC compliance.

  • Individual and corporate client types
  • Nationality, civil ID, contact details
  • Linked cases, sessions, invoices on one page
  • GDPR-ready export and deletion controls
Numbers partners can act on
Reports & analytics

Numbers partners can act on

Built-in reports across cases, lawyers, clients, salaries, and financials. Partners see firm-wide performance; lawyers see only what they're allowed to.

  • Cases by status / type / court
  • Lawyer workload and win-rate breakdown
  • Client lifetime value and outstanding balances
  • Monthly financial summary with export
Built for sensitive data
Security & access

Built for sensitive data

Role-based access (partner / lawyer / paralegal / finance / admin), JWT-secured API, encrypted document vault, and a full audit trail on every privileged action — designed for a legal-compliance environment.

  • Role and claim-based authorization
  • JWT + refresh tokens, 2FA optional
  • Document encryption at rest (AES-256)
  • Audit log: every privileged action recorded
70%
Less time on admin paperwork
100%
Hearings, deadlines, and invoices tracked in one place
0
Missed court hearings since launch
3x
Faster invoice issuance and follow-up
Featured case study

Hotel Reservation Manager — a focused front-desk & PMS console for hotels that book offline.

A focused, admin-only PMS platform built for properties whose bookings come in by phone, walk-in, OTA, or travel agency — properties that don't need a public booking website. The whole product is the back office: a visual room board, fast reservation entry, folios, housekeeping status, discounts, services, and reports — all bilingual (Arabic / English) and multi-tenant SaaS.

Industry
Hospitality (boutique, resort, serviced apartments)
Users
Front-desk, reservations, housekeeping, finance, owners
Architecture
Multi-tenant SaaS — one platform, many hotels
Scope
Admin only — for hotels that book offline
.NET 10 Blazor Server MudBlazor SQL Server EF Core JWT Multi-tenant
reservations.majidtek.com
Hotel Reservation Manager — dashboard
Inside the console

Twelve focused modules. Zero learning curve.

Every screen below is from a real production build, captured today. Designed so a new front-desk hire is productive on day one.

One sign-in for many hotels
Login — multi-tenant

One sign-in for many hotels

Each hotel is its own tenant with isolated data, but staff sign in through the same login. Platform owners can sign in as SuperAdmin to manage every property and switch tenants from the toolbar.

  • Tenant selector at sign-in (or empty = Platform Owner)
  • JWT-secured session with refresh tokens
  • Per-tenant data isolation at the database layer
  • Roles per tenant: owner / manager / front-desk / housekeeping / accountant
The whole property at a glance
Dashboard

The whole property at a glance

Opening view: today's check-ins and check-outs, occupancy %, revenue, rooms needing attention, top room types, and quick-action cards for the actions staff do most.

  • Occupancy, ADR, revenue, arrivals & departures
  • Top-selling room types and longest-staying guests
  • Rooms requiring inspection or cleaning
  • Quick actions: new reservation, check-in, folio, services
Visual room status, by floor
Front-desk board

Visual room status, by floor

A color-coded board of every room, grouped by floor. Green = clean & ready, blue = reserved, yellow = ready for inspection, red = needs attention. One click on a card opens its history, current guest, or maintenance ticket.

  • Floor-by-floor visual layout matching the property
  • Color-coded status (clean / dirty / OOO / reserved / occupied)
  • Click a room to see who's in it and what's next
  • Inline status changes — no separate screen
Every booking, searchable
Reservations

Every booking, searchable

Auto-numbered reservations (R202605-0001 …) with arrival, departure, room, guest, total amount, and status badges. Filter by date range, status, room, or guest.

  • Auto-numbered reservation IDs by year-month
  • Filters: date range, status, room, guest
  • Status timeline: tentative → confirmed → arrived → departed
  • Excel export for accounting and reporting
Book in three guided steps
New reservation wizard

Book in three guided steps

Fast intake flow optimized for phone bookings: pick dates and guest count → choose room and rate → confirm with guest details. Picks up existing guests automatically.

  • Date pickers with availability validation
  • Guest reuse — find existing guests as you type
  • Live rate calculation, discounts applied inline
  • Saves draft if the call drops mid-booking
Inventory you can actually edit
Rooms & room types

Inventory you can actually edit

Two screens, one story: define room types (Standard / Deluxe / Suite) with base price, occupancy, and amenities — then assign physical rooms to those types, with their floor, view, and current status.

  • Room types with rate, capacity, amenities
  • Per-room metadata: floor, view, accessibility
  • Bulk edit and bulk pricing updates
  • Out-of-order toggle with reason and ETA
Mirror the building you actually have
Floors

Mirror the building you actually have

Configure the property structure: how many floors, what rooms are on each, what their numbering scheme is. The front-desk board mirrors this layout so staff see the property the way they walk it.

  • Add / rename / re-order floors
  • Number rooms per floor (G01, G02 … 101, 102 …)
  • Floor-wide actions (mark entire floor under maintenance)
  • Driving layout for the front-desk board
KYC and history in one profile
Guests

KYC and history in one profile

Full guest profile: contact details, nationality, civil ID / passport for KYC compliance, plus every past reservation, every folio, and every service request — the whole relationship at a glance.

  • Individual and corporate guest types
  • Document upload (ID, passport, visa)
  • Reservation and folio history per guest
  • VIP / blacklist flags with audit trail
One running bill per stay
Folios

One running bill per stay

Every stay opens a folio (running bill). Charges land automatically (room nights, services, taxes); payments are posted as they come in (cash / card / transfer / cheque). Balance updates live until check-out.

  • Auto-posting of room nights and taxes
  • Manual charges (mini-bar, laundry, room service)
  • Multiple payments per folio with method tracking
  • PDF invoice export at check-out
Coordinate cleaning without radios
Housekeeping

Coordinate cleaning without radios

Live housekeeping board: every room and its current status (clean / dirty / inspected / out-of-order), who's assigned, and how long it's been. Updates flow back to the front-desk board instantly.

  • Status: dirty → cleaning → clean → inspected
  • Assign rooms to housekeepers per shift
  • Out-of-order with reason, ETA, and notes
  • Daily turnover report
Charge for extras and reward loyalty
Services & discounts

Charge for extras and reward loyalty

Two related modules: maintain a catalog of paid services (spa, laundry, airport pickup, room service) and a list of discount codes (long-stay, corporate, agent). Both surface inline in the new-reservation wizard.

  • Service catalog with price and tax category
  • Discount rules: percentage, fixed amount, code-driven
  • Per-tenant — every hotel has its own catalog
  • Usage stats per service / discount
Numbers owners actually open
Reports

Numbers owners actually open

Built-in reports across reservations, revenue, occupancy, room performance, and guests. All exportable to Excel for accounting handoff. Per-tenant for hotel staff, cross-tenant for platform owners.

  • Occupancy %, ADR, RevPAR per property
  • Revenue by source (walk-in, OTA, corporate, agent)
  • Top guests, top services, top rooms
  • Excel and PDF export, schedulable email reports
5 min
From walk-in to confirmed reservation
∞
Hotels per platform (multi-tenant)
Real-time
Room status sync (front-desk ↔ housekeeping)
100%
Bilingual — Arabic and English
Why choose us

Ten reasons clients pick MajidTek

What we hold ourselves to on every project — from the first kickoff call to long-term support.

Expertise across the development lifecycle

Our team is proficient in every stage of development, from concept design to deployment and maintenance.

Tailored solutions

We deliver innovative and customized solutions specifically designed to meet your business needs and objectives.

Proven track record

A history of delivering successful projects for a wide range of industries, ensuring reliability and trust.

Cutting-edge technologies

We stay ahead of the curve by leveraging the latest tools, technologies, and frameworks to give you a competitive edge.

Customer-centric approach

We prioritize our clients' needs and maintain close communication to ensure your vision is realized.

Agile and adaptive

Our agile methodology allows us to adapt quickly to changes, delivering high-quality results within your timeline.

Focus on scalability

Our solutions are built to grow with your business, ensuring long-term value and performance.

Exceptional customer support

Post-project support and assistance to ensure smooth operation and maintenance.

Ethical practices

Integrity, transparency, and trust are at the core of everything we do.

Passionate team

A dedicated team of developers, designers, and strategists who are committed to turning your ideas into reality.

What clients say

Quiet delivery, loud results

We don't talk much about our work — our clients do. Here is what they've said.

“
MajidTek rebuilt our entire case-management system in twelve weeks. The new platform is faster, cleaner, and our partners actually enjoy using it. They write code we can read.
AH
A. Al-Hinai
Managing Partner, Al-Hinai Law Firm
“
We launched our PMS, customer portal, and mobile reservation flow on the date they committed to. Six months later, zero production incidents. That's rare in this market.
FB
F. Al-Balushi
Operations Director, Royal Crown Hotels
“
Their security review uncovered things our previous vendor missed for years. They didn't just patch — they explained, documented, and trained our team. Worth every rial.
SS
S. Al-Saidi
CTO, GCC Logistics Group
FAQ

Frequently asked questions

The short answers. For everything else, just reach out — we reply within a business day.

Marketing sites: 2-4 weeks. SaaS MVPs: 8-14 weeks. Full enterprise platforms (PMS, ERP, case management): 16-24 weeks. We always start with a paid 1-week discovery to nail down scope before quoting timeline.
We price by phase, not hour. Discovery is a fixed fee (typically OMR 500-1500). Build phases are quoted as fixed-price milestones after discovery. No surprise invoices — if scope grows mid-project, you approve in writing before we proceed.
You do, fully. Source code, IP, designs, infrastructure access — all transferred to your accounts on day one. We use your GitHub, your Azure, your domains. No vendor lock-in, no 'platform fees' after launch.
Yes — every project comes with a 30-day hypercare window post-launch at no charge. After that, we offer tiered SLA retainers (Bronze / Silver / Gold) for monitoring, bug fixes, security patching, and feature work.
Absolutely. We've embedded with in-house teams as senior contributors, paired on architecture for client devs, and delivered standalone with handoff. Tell us what shape works for you.
Headquartered in Muscat, Oman. We work remotely-first across GCC clients and travel on-site for kickoffs, milestone reviews, and any work requiring secure-room access. English and Arabic both fully supported.

Ready to ship something worth talking about?

Tell us the rough shape of your idea. We'll come back within one business day with a candid take — whether it's a fit, what it would take, and what we'd build first.

Get in touch

Let's build something worth talking about

Tell us about your project. We reply within one business day — usually a lot sooner.

An unhandled error has occurred. Reload 🗙
MajidTek logo MajidTek ماجد تك
Connecting You are offline Disconnected Paused

Reconnecting… Still trying… Connection lost Session paused Couldn't resume

The connection to MajidTek dropped for a moment. Hold on, we're bringing it back. Next attempt in 0 s. You can also retry now. We couldn't reach the server. Check your internet connection, then retry or reload the page. The server paused this session to save resources. Resume to continue where you left off. The session could not be resumed. Retry or reload the page.

Your place on the page is kept while we reconnect.