Start a project

Website & web-app studio

Fast, beautiful web experiences.

TekTross designs and builds websites and web apps that load in a blink and feel effortless to use.

Scroll to see how

01 Services

What we build, in miniature.

Websites, web apps, design systems, audits and AI features, each with animated samples.

  1. WebsitesMarketing and company sites that load fast on any phone, easy to update.
  2. Web applicationsDashboards, portals and internal tools that feel as quick as native apps.
  3. Design systemsOne set of tokens and components, so every screen matches.
  4. Performance & accessibility auditsWe measure on real phones, then fix what matters most.
  5. AI-enabled featuresSearch, summaries and assistants, kept fast, private and clearly labelled as AI.
  1. Websites

    Marketing sites, landing pages and company sites that load fast on any phone. Every page is hand-written, accessible and easy for your team to update.

    More about websites

    Starts from ₹5,000 in India · US$50 outside India For details, email admin@tektross.com

    • Harbour Bakery Fictional sample
      A bakery site: menu, ordering and opening hours.

    • Northgate Barbers Fictional sample
      A small-business booking site, built for phones first.

    • Ashby & Vale Fictional sample
      A law firm: calm, clear, quick to book.

  2. Web applications

    Dashboards, portals and internal tools that feel as quick as a native app. We design the screens and build the front end your users touch every day.

    More about web applications
    • Fleet overview Fictional sample
      A dashboard: live numbers, charts and a work queue.

    • Studio bookings Fictional sample
      Bookings: a week at a glance, confirmed in one tap.

    • Client portal Fictional sample
      A client portal: documents, status and progress.

  3. Design systems

    A shared set of tokens and components so every screen stays consistent. Your team builds faster because the small decisions are already made.

    More about design systems
    • Tokens Fictional sample
      Tokens: colour, type and spacing, defined once.

    • Components Fictional sample
      Components built from the tokens, so nothing drifts.

    • Three screens, one system Fictional sample
      Light and dark, phone to desktop, one source of truth.

  4. Performance & accessibility audits

    We measure your site on real phones and slow networks, then fix what matters most. You get a ranked list of changes with numbers before and after.

    More about audits
    • Before and after Fictional sample Illustrative figures
      Scores before and after a fix round (illustrative).

    • Fewer requests Fictional sample Illustrative figures
      Fewer, smaller requests after the audit (illustrative).

    • Ranked fixes Fictional sample Illustrative figures
      A ranked list, so you fix what matters first.

  5. AI-enabled features

    Search, summaries and assistants added to your product where they save people time. We keep them fast, private and clearly labelled.

    More about AI features
    • Search that understands Fictional sample
      Search that understands a plain question.

    • Summary Fictional sample
      A long document, summarised and labelled as AI.

    • Assistant Fictional sample
      An assistant that answers inside your product, clearly labelled.

Every sample is a fictional concept, built in plain HTML and CSS like the rest of this page.

View markup & how it's built

Each sample is a small page of its own in plain HTML and CSS, not a screenshot or a video, shown scaled down in a frame that loads only as it nears the screen. The carousels are native horizontal scroll with scroll-snap. With JavaScript, a deck on screen moves to its next sample every few seconds: pointing at it or focusing it holds it, using it or pressing Pause stops it, and it never starts by itself if you prefer reduced motion. Without JavaScript, the samples stack as a list.

<section aria-roledescription="carousel" aria-label="Websites samples">
  <ul class="deck-track" role="list">
    <li role="group" aria-roledescription="slide" aria-label="1 of 3: Harbour Bakery">
      <iframe src="/samples/websites-bakery/" loading="lazy" tabindex="-1" aria-hidden="true" title="…"></iframe>
    </li>
  </ul>
  <button type="button">Pause</button>
</section>
.deck-track { overflow-x: auto; scroll-snap-type: x mandatory; }
.deck-slide { scroll-snap-align: start; }

02 Foundations

Everything starts with a system.

Type, colour and spacing come from one set of tokens, so nothing drifts.

Type scale

  1. step-5Aa Fast
  2. step-4Aa Fast pages
  3. step-3Aa Fast pages
  4. step-2Aa Fast pages sell
  5. step-1Aa Fast pages sell more
  6. step-0Body text sits at 16–18 px with a 65ch measure.
  7. step--1Captions, labels and small print.
Display
Bodoni Moda
Text
Manrope

Colour tokens

  • --bg#DCE0E4 / #1832509.8 / 9.8 text on it
  • --surface#F5F7F9 / #233D5A12.1 / 8.4 text on it
  • --text#183250 / #DCE0E49.8 / 9.8 on bg
  • --muted#4A5E78 / #A7B6C55.0 / 6.3 on bg
  • --accent#233D5A / #C5D2D98.4 / 8.4 on bg
  • --accent-contrast#FFFFFF / #18325011.1 / 8.4 on accent
  • --gold-ink#7A5C1E / #D9B8774.7 / 6.9 gold text on bg
  • --border#C5D2D9 / #4A5E781.2 / 2.0 on bg, decorative

Contrast against the page background, light / dark. AA needs 4.5 for text and 3 for UI.

Spacing rhythm

  • 3xs
  • 2xs
  • xs
  • s
  • m
  • l
  • xl
  • 2xl
  • 3xl

Icon set

  • type
  • palette
  • grid
  • layers
  • form
  • chart
  • cart
  • bolt
  • code
  • mail

Drawn on a 24-unit grid with a 1.75 stroke. One sprite, no icon font.

Consistency is what makes a site feel expensive without costing more.

View markup & how it's built

Every size, colour and gap on this site is a CSS custom property. Type and space scale smoothly with clamp() between a 360 px phone and a 1440 px desktop.

:root {
  --step-0: clamp(1rem, .9583rem + .1852vw, 1.125rem);
  --space-m: clamp(1.5rem, 1.4375rem + .2778vw, 1.6875rem);
  --accent: #233D5A;
}
h2 { font-size: var(--step-4); }

04 Content & cards

Layouts that stay composed.

Cards and grids that reflow gracefully from a phone to a wide monitor.

  • Websites

    Fast, readable, easy to update.

  • Web apps

    Dashboards and portals.

  • Design systems

    Tokens your team reuses.

  • Audits

    Numbers before and after.

  • AI features

    Useful, labelled, private.

  • Support

    Fixes and monthly checks.

Fluid by default

Type and spacing scale smoothly with the screen. No awkward jumps between phone and laptop.

Accessible by habit

Keyboard, screen reader and zoom are checked on every component, not bolted on at the end.

Sample content

“We asked for a faster site. We got one our team actually enjoys updating.”

Client name
Role, company
16 / 9

Media card

The frame keeps its shape before anything loads, so the page never jumps.

One layout, every screen, no broken edges to apologise for.

View markup & how it's built

CSS grid with named areas and container queries. Media keeps its shape with aspect-ratio, so nothing jumps while it loads.

<ul class="bento">
  <li class="bento-cell b1">…</li>
</ul>
.bento { display: grid; grid-template-areas: "a a b" "c d b" "e e f"; }
.media-frame { aspect-ratio: 16 / 9; }

05 Forms & inputs

Forms people actually finish.

Clear labels, instant feedback and short steps turn visitors into enquiries.

Inputs

Type a partial address, then leave the field.

Looks good

Add the domain ending, like .com

Choices

Timeline
8

Multi-step

3 short steps

1 · About you
2 · The project
3 · Timing

Every abandoned form is a lead you paid for and lost.

View markup & how it's built

Native inputs, native validation and :user-invalid styling. Floating labels are pure CSS; the toggle is a checkbox with role="switch".

<div class="field">
  <input id="email" type="email" placeholder=" " required>
  <label for="email">Work email</label>
</div>
.input:not(:placeholder-shown) + label { translate: 0 -.9em; scale: .8; }
.input:user-invalid { border-color: var(--error); }

06 Data & feedback

Numbers you can read at a glance.

Charts, counters and status built by hand, with no heavy libraries.

  • 13chapters on this page
  • 20icons in one sprite
  • 0third-party scripts
Enquiries per weekDemo data
Speed scoreDemo data

Higher is better: up across the last 9 releases.

Launch checklistDemo data

72%complete

Dashboards and web apps, not just brochures.

View markup & how it's built

Charts are hand-written inline SVG. Bars grow with transform and lines draw with stroke-dashoffset, bound to your scroll position.

<svg viewBox="0 0 240 120" role="img" aria-label="Bar chart">
  <rect class="bar" x="8" y="72" width="28" height="38"/>
</svg>
.bar { transform-box: fill-box; transform-origin: bottom;
  animation: grow linear both; animation-timeline: --chart; }

07 Commerce & pricing

Pricing that explains itself.

Plans, products and comparisons laid out so the right choice is obvious.

Sample figures for a fictional app, not TekTross prices. See our website prices

Billing period
  • Starter

    $12$10/ month

    Billed monthlyBilled $120 yearly

    • 1 project
    • Email support
  • Scale

    $79$66/ month

    Billed monthlyBilled $792 yearly

    • Unlimited projects
    • SSO
    • Audit log
New Cart items:0

Oak desk lamp

Warm light, solid oak base.

$64 Sample

Compare plans
FeatureStarterTeamScale
Projects110Unlimited
Shared components—Not includedIncludedIncluded
Single sign-on—Not included—Not includedIncluded
SupportEmailPriorityNamed contact

Fewer questions before checkout means more checkouts.

View markup & how it's built

The monthly and annual switch is two radio buttons and the :has() selector. The comparison table uses real table headers with scope.

<input type="radio" name="billing" id="bill-y">
<label for="bill-y">Annual</label>
.pricing:has(#bill-y:checked) .pm { display: none; }
.pricing:has(#bill-y:checked) .py { display: inline; }

08 Motion & micro-interactions

Small moments, done well.

Hover, press and open states that respond instantly and never get in the way.

Button states

  • Rest
  • Hover
  • Focus
  • Press
  • Loading

Accordion

Do you use templates?

No. Every page is written by hand from a shared set of tokens and components, so nothing is there that you do not need.

Can my team edit the site?

Yes. Copy lives in plain data files, so changing a headline does not mean touching code.

What happens after launch?

Support: fixes, updates and a monthly performance check on real phones.

Reorder

  1. Write the copy
  2. Set up the domain
  3. Test on real phones
  4. Go live

Feedback this quick costs nothing in speed and earns trust.

View markup & how it's built

Only transform and opacity animate. The list reorder measures positions first, then plays a short transform (the FLIP technique).

const first = item.getBoundingClientRect();
list.insertBefore(item, item.previousElementSibling);
const last = item.getBoundingClientRect();
item.animate([{ transform: `translateY(${first.top - last.top}px)` },
  { transform: 'none' }], { duration: 240, easing: 'ease-out' });

09 Performance proof

This page just measured itself.

Your browser loaded everything you have seen so far in the bytes below.

89.5 KB — ms

Measured when this site was built: compressed size of this page, its stylesheet, script and font. Turn on JavaScript to see your own browser's numbers.

Lighthouse lab run
100 performance · 100 accessibility · 100 best practices · 100 SEO. Mobile, simulated throttling, 18 Oct 2026.

Figures are read live from your browser, never typed in by us.

View markup & how it's built

The figure adds up transferSize from the Navigation and Resource Timing APIs. With JavaScript off you see the size measured when the site was built.

const entries = [
  ...performance.getEntriesByType('navigation'),
  ...performance.getEntriesByType('resource')];
const bytes = entries.reduce((sum, e) => sum + e.transferSize, 0);

10 Process

Five steps, no surprises.

Discover, design, build, launch and support, with you involved at every step.

  1. 1 Discover

    We learn your goals, users and constraints.

  2. 2 Design

    Tokens, layouts and copy, reviewed with you.

  3. 3 Build

    Hand-written, tested, accessible code.

  4. 4 Launch

    Measured on real phones before going live.

  5. 5 Support

    Fixes, updates and monthly performance checks.

You see progress weekly and nothing ships without your sign-off.

View markup & how it's built

One ordered list. A container query switches it from a vertical timeline to a horizontal stepper once it has room.

<ol class="steps">…</ol>
.process { container-type: inline-size; }
@container (min-width: 720px) {
  .steps { grid-auto-flow: column; }
}

11 Selected work

Results, not promises.

A few recent projects, what the problem was and what changed after launch.

  • Business

    Appointment management platform

    Problem
    Customers gave up booking on their phones. The old app took several seconds to respond on mobile data.
    Built
    A rebuilt booking flow and customer portal front end on a shared component library.
    Outcome
    Booking feels instant on mid-range phones, and front-desk staff field fewer calls about appointments.
    • HTML
    • CSS
    • TypeScript
    • Design tokens
    View the appointment management case study
  • Professional services

    Advisory firm website

    Problem
    A dated site that partners avoided sending to prospects, and that the team could not update themselves.
    Built
    A new marketing site with a small design system and copy stored in plain data files.
    Outcome
    Partners now link to the site in proposals, and the team publishes updates without a developer.
    • Static HTML
    • CSS
    • Astro
    View the advisory firm case study
  • Retail SMB

    Independent retail store

    Problem
    Product pages loaded slowly on phones and the checkout path had too many steps.
    Built
    Faster product pages, a shorter checkout and an accessible filter panel.
    Outcome
    Shoppers reach checkout in fewer taps, and the store owner can add products without help.
    • HTML
    • CSS
    • JavaScript
    • Headless commerce
    View the retail store case study

Details and stack are inside each case study.

View markup & how it's built

Each card is an article with a real link. Case studies are generated from one data file at build time.

<article class="case">
  <h3>Appointment management platform</h3>
  <dl>…problem · built · outcome…</dl>
  <a href="/work/#appointment-management">View the appointment management case study</a>
</article>

12 Contact

Let's build something fast.

Tell us about your project and we will reply within two working days.

Budget

Takes about a minute. No calls unless you ask.

Prefer email? admin@tektross.com works too.

View markup & how it's built

A plain HTML form posting to a static form service. With JavaScript on it sends in the background; with it off, you land on a thank-you page.

<form action="https://formspree.io/f/…" method="POST">
  <input name="email" type="email" required>
  <input name="_gotcha" tabindex="-1" autocomplete="off">
  <button type="submit">Send message</button>
</form>