Skip to content

Repository files navigation

El-Kayyisa Bimbingan Belajar
Indonesia Bahasa Indonesia
Personal Tutoring · Continuous Learning Support · Sentra Smartboard

EL-KAYYISA // TUTORING LANDING

El-Kayyisa learning doctrine

Digital front door for El-Kayyisa and the presentation surface for Sentra Smartboard.
A responsive React experience for tutoring programs, learning context, and visible student progress.

Active development Education React 19 Vite 8 GSAP Human led

El-Kayyisa tutoring experience

Learning Continuity Progress Human guidance


00 · EXECUTIVE SUMMARY

El-Kayyisa is a personal and structured tutoring service designed around a simple premise: students do not need more noise. They need guidance that understands their current position, identifies what is holding them back, and makes the next meaningful step clear.

This repository contains the public-facing El-Kayyisa web experience. It combines tutoring landing pages, program information, learning content, legal pages, and a bespoke presentation of Sentra Smartboard—a learning intelligence surface for communicating progress, patterns, observations, and follow-up needs.

PRODUCT

Personal tutoring website and Smartboard presentation surface.

PRIMARY USERS

Students, parents, tutors, and service administrators.

CURRENT SCOPE

Frontend presentation, local routes, mirrored content, and bespoke pages.

DECISION BOUNDARY

Tutors and parents remain responsible for educational decisions.

%%{init: {"theme":"base","themeVariables":{"background":"#FFFFFF","primaryColor":"#FFFFFF","secondaryColor":"#FFFFFF","tertiaryColor":"#FFFFFF","primaryTextColor":"#0F172A","secondaryTextColor":"#0F172A","tertiaryTextColor":"#0F172A","lineColor":"#64748B","clusterBkg":"#FFFFFF","clusterBorder":"#CBD5E1","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%%
flowchart LR
    A["Student context"] --> B["Personal tutoring"]
    B --> C["Session observations"]
    C --> D["Visible progress"]
    D --> E["Shared interpretation"]
    E --> F["Next meaningful step"]
    F --> B

    classDef blue fill:#FFFFFF,stroke:#2563EB,color:#1E3A8A,stroke-width:2px;
    classDef violet fill:#FFFFFF,stroke:#7C3AED,color:#4C1D95,stroke-width:2px;
    classDef green fill:#FFFFFF,stroke:#16A34A,color:#14532D,stroke-width:2px;
    classDef orange fill:#FFFFFF,stroke:#F97316,color:#7C2D12,stroke-width:2px;

    class A,B blue;
    class C,D violet;
    class E green;
    class F orange;
Loading

The current objective is precise: present El-Kayyisa as a calm, credible, human-centered tutoring service while establishing the frontend foundation for a more connected learning ecosystem.


01 · PRODUCT THESIS

Technology should make the student journey easier to understand—not make learning feel more complicated.

STUDENT JOURNEY

Progress is a longitudinal journey across sessions, habits, observations, understanding, and follow-up—not one isolated test result.

Personal progress

HUMAN AUTHORITY

Tutors and parents interpret context, select interventions, and remain responsible for learning decisions. Sentra AI supports; it does not decide.

Human authority

VISIBLE CONTINUITY

Smartboard turns repeated interactions into a clearer narrative that students, tutors, and parents can review together.

Visible continuity

PERSONAL BEFORE GENERIC

The experience communicates individualized support, staged learning, and attention to the student's actual needs.

CLARITY BEFORE COMPLEXITY

Navigation, motion, content, and information hierarchy must remain understandable. Every feature must justify its presence.

PRESERVATION AS CONTRACT

Mirrored pages preserve the source visual language. Bespoke pages are isolated, intentional, and never silently rewrite the source design.


02 · EXPERIENCE MODEL

The product is organized into three connected but distinct layers.

%%{init: {"theme":"base","themeVariables":{"background":"#FFFFFF","primaryColor":"#FFFFFF","secondaryColor":"#FFFFFF","tertiaryColor":"#FFFFFF","primaryTextColor":"#0F172A","secondaryTextColor":"#0F172A","tertiaryTextColor":"#0F172A","lineColor":"#64748B","clusterBkg":"#FFFFFF","clusterBorder":"#CBD5E1","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%%
flowchart TB
    subgraph L1["LEARNING LAYER"]
        A1["Personal tutoring"]
        A2["Clear learning targets"]
        A3["Gradual reinforcement"]
        A4["Parent and tutor communication"]
    end

    subgraph L2["SMARTBOARD LAYER"]
        B1["Session summaries"]
        B2["Longitudinal progress"]
        B3["Tutor observations"]
        B4["AI-assisted recommendations"]
    end

    subgraph L3["PLATFORM LAYER"]
        C1["React application"]
        C2["Local routing"]
        C3["Mirrored pages"]
        C4["Bespoke product pages"]
    end

    L1 --> L2
    L2 --> L3

    classDef learning fill:#FFFFFF,stroke:#2563EB,color:#1E3A8A,stroke-width:2px;
    classDef smart fill:#FFFFFF,stroke:#7C3AED,color:#4C1D95,stroke-width:2px;
    classDef platform fill:#FFFFFF,stroke:#F97316,color:#7C2D12,stroke-width:2px;

    class A1,A2,A3,A4 learning;
    class B1,B2,B3,B4 smart;
    class C1,C2,C3,C4 platform;

    style L1 fill:#FFFFFF,stroke:#2563EB,stroke-width:2px;
    style L2 fill:#FFFFFF,stroke:#7C3AED,stroke-width:2px;
    style L3 fill:#FFFFFF,stroke:#F97316,stroke-width:2px;
Loading

LAYER I · LEARNING

Personal tutoring, explicit learning targets, gradual reinforcement, and communication that keeps students and parents oriented.

Personal Structured Understanding

LAYER II · SMARTBOARD

A dedicated interface concept for summaries, progress trajectories, tutor observations, and AI-assisted recommendations.

Progress Insight Follow-up

LAYER III · PLATFORM

A React application that preserves the source site's visual language while adding local routing, reusable site chrome, bespoke pages, and local assets.

React TypeScript Vite

03 · CURRENT CAPABILITIES

Capability Current implementation Explicit boundary
Multi-page tutoring website Local React routes for programs, information, insights, pricing, and supporting pages. Frontend presentation only.
Sentra Smartboard page Hand-authored React page with learning summaries, progress visuals, program signals, and AI recommendation examples. No operational student backend is included.
Responsive navigation Desktop and mobile navigation, fullscreen menu, escape handling, scroll-aware behavior, and route-aware links. Navigation state is client-side.
Source-page preservation Raw HTML snapshots are parsed, localized, and rendered while retaining source classes and layout behavior. Only vetted local snapshots should enter this path.
Local asset mirror CSS, JavaScript, fonts, images, and supporting assets can be mirrored into public/source-assets. Refreshing assets requires access to the configured source origin.
Legal information Dedicated Indonesian privacy policy and terms-of-service routes. Formal legal review remains an organizational responsibility.
Runtime metadata Mirrored routes update browser title and description from their source snapshots. The static shell still contains legacy metadata.

04 · ROUTE CONSTELLATION

%%{init: {"theme":"base","themeVariables":{"background":"#FFFFFF","primaryColor":"#FFFFFF","secondaryColor":"#FFFFFF","tertiaryColor":"#FFFFFF","primaryTextColor":"#0F172A","secondaryTextColor":"#0F172A","tertiaryTextColor":"#0F172A","lineColor":"#64748B","clusterBkg":"#FFFFFF","clusterBorder":"#CBD5E1","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%%
flowchart LR
    R["Browser request"] --> Q{"Route classification"}

    Q -->|Mirrored| M["Source mirror pipeline"]
    Q -->|Bespoke| B["Bespoke React pipeline"]
    Q -->|Unknown| X["Redirect to /services"]

    M --> M1["/services"]
    M --> M2["/services/*"]
    M --> M3["/blog"]
    M --> M4["/about"]
    M --> M5["/pricing"]

    B --> B1["/smartboard"]
    B --> B2["/kebijakan-privasi"]
    B --> B3["/ketentuan-layanan"]

    classDef entry fill:#FFFFFF,stroke:#475569,color:#0F172A,stroke-width:2px;
    classDef mirror fill:#FFFFFF,stroke:#2563EB,color:#1E3A8A,stroke-width:2px;
    classDef bespoke fill:#FFFFFF,stroke:#7C3AED,color:#4C1D95,stroke-width:2px;
    classDef redirect fill:#FFFFFF,stroke:#F97316,color:#7C2D12,stroke-width:2px;

    class R,Q entry;
    class M,M1,M2,M3,M4,M5 mirror;
    class B,B1,B2,B3 bespoke;
    class X redirect;
Loading
Route Surface Rendering pattern
/services Main program and landing surface Source mirror
/services/ai-strategy Program detail surface Source mirror
/services/business-consulting Program detail surface Source mirror
/services/data-insights Program detail surface Source mirror
/blog Learning insights Source mirror
/about El-Kayyisa information Source mirror
/pricing Learning model and pricing Source mirror
/smartboard Sentra Smartboard presentation Bespoke React page
/kebijakan-privasi Privacy policy Bespoke React page
/ketentuan-layanan Terms of service Bespoke React page
* Unknown route Redirect to /services

The three /services/* slugs are inherited technical routes from the original source structure. Their user-facing content is authoritative; the legacy slug names are not.


05 · SYSTEM ARCHITECTURE

%%{init: {"theme":"base","themeVariables":{"background":"#FFFFFF","primaryColor":"#FFFFFF","secondaryColor":"#FFFFFF","tertiaryColor":"#FFFFFF","primaryTextColor":"#0F172A","secondaryTextColor":"#0F172A","tertiaryTextColor":"#0F172A","lineColor":"#64748B","clusterBkg":"#FFFFFF","clusterBorder":"#CBD5E1","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%%
flowchart TD
    A["Browser"] --> B["React 19 and BrowserRouter"]
    B --> C["src/App.tsx"]

    C --> D{"Rendering contract"}

    D -->|Mirrored route| E["src/sourcePages.ts"]
    E --> F["Captured HTML snapshots"]
    E --> G["DOM parsing and URL localization"]
    G --> H["src/components/SourcePage.tsx"]
    H --> I["Local mirrored assets"]
    H --> J["Reattached navigation, FAQ, and scroll behavior"]

    D -->|Bespoke route| K["Smartboard and policy pages"]
    K --> L["Shared SiteHeader and SiteFooter"]
    K --> M["Scoped styles"]
    K --> N["Controlled GSAP motion"]

    O["scripts/mirror-source-assets.mjs"] --> I
    I --> P["public/source-assets"]

    classDef browser fill:#FFFFFF,stroke:#475569,color:#0F172A,stroke-width:2px;
    classDef core fill:#FFFFFF,stroke:#2563EB,color:#1E3A8A,stroke-width:2px;
    classDef mirror fill:#FFFFFF,stroke:#16A34A,color:#14532D,stroke-width:2px;
    classDef bespoke fill:#FFFFFF,stroke:#7C3AED,color:#4C1D95,stroke-width:2px;
    classDef asset fill:#FFFFFF,stroke:#F97316,color:#7C2D12,stroke-width:2px;

    class A browser;
    class B,C,D core;
    class E,F,G,H,J mirror;
    class K,L,M,N bespoke;
    class I,O,P asset;
Loading

TWO RENDERING CONTRACTS

A · SOURCE MIRROR

Used for the original multi-page marketing experience.

  • Imports captured HTML with Vite ?raw
  • Parses content through DOMParser
  • Removes embedded scripts and stylesheets
  • Rewrites internal links to local routes
  • Localizes source assets
  • Renders reviewed snapshots through dangerouslySetInnerHTML
  • Reattaches selected runtime interactions in React

Contract: never convert a mirrored page into a partially hand-authored hybrid.

Source preservation

B · BESPOKE REACT

Used when a page requires its own product-specific composition.

  • Authored as a React component
  • No raw HTML injection
  • Uses scoped page classes
  • Shares common site chrome where appropriate
  • Uses controlled GSAP motion
  • Registered explicitly in src/App.tsx

Contract: never route a bespoke page through the source-mirror pipeline.

Explicit composition

06 · REPOSITORY MAP

tutoring-landing/
├── index.html                         # Vite application shell
├── index-2.html ... index-5.html     # Captured source-page snapshots
├── source-about.html                 # Captured About page
├── source-blog.html                  # Captured insights page
├── source-pricing.html               # Captured learning/pricing page
├── package.json                      # Runtime, scripts, and dependencies
├── tsconfig.json                     # Strict TypeScript configuration
├── scripts/
│   └── mirror-source-assets.mjs      # Source-asset crawler and localizer
├── public/
│   └── source-assets/                # Runtime assets served by Vite
└── src/
    ├── main.tsx                      # React root and BrowserRouter
    ├── App.tsx                       # Route registry and fallback
    ├── sourcePages.ts                # Source parsing and route localization
    ├── components/
    │   ├── SourcePage.tsx            # Generic mirrored-page renderer
    │   ├── SmartboardPage.tsx        # Bespoke Smartboard experience
    │   ├── SiteChrome.tsx            # Shared header, menu, and footer
    │   ├── PrivacyPolicyPage.tsx     # Indonesian privacy policy
    │   └── TermsOfServicePage.tsx    # Indonesian terms of service
    ├── lib/
    │   └── smartboardMotion.ts       # Smartboard motion behavior
    └── styles/
        └── app.css                   # Global, mirrored, and scoped styles

07 · LOCAL RUNBOOK

PREREQUISITES

  • Node.js
  • npm
  • Git

The repository does not currently pin a Node.js version through engines or a version file. Use a maintained Node.js LTS release compatible with the locked dependency tree.

INSTALLATION

git clone https://github.com/drferdii/tutoring-landing.git
cd tutoring-landing
npm install

DEVELOPMENT

npm run dev

Vite prints the local development URL in the terminal.

PRODUCTION BUILD

npm run build

The build command performs strict TypeScript validation and then creates the production bundle in dist/.

LOCAL PRODUCTION PREVIEW

npm run preview

SOURCE-ASSET REFRESH

npm run assets:mirror

This command reads captured source HTML, discovers eligible assets from the configured origin, downloads them, rewrites internal references, and stores the result under public/source-assets/.

Do not run the mirror command casually in a review branch. It can generate a broad asset diff and depends on the current external source origin.


08 · COMMAND AND ENVIRONMENT SURFACE

Command Purpose Required before merge
npm run dev Start the Vite development server For visual and interaction checks
npm run typecheck Run TypeScript without emitting files Yes
npm run build Typecheck and create the production bundle Yes
npm run preview Preview the generated production build Recommended
npm run assets:mirror Refresh mirrored source assets Only when source assets change

ENVIRONMENT VARIABLES

The inspected application code does not currently document required runtime environment variables.

Do not add secrets, student data, API credentials, or private service endpoints to committed frontend files. Future integrations should use explicit environment contracts and server-side protection wherever sensitive data is involved.


09 · DESIGN AND CONTENT CONTRACT

%%{init: {"theme":"base","themeVariables":{"background":"#FFFFFF","primaryColor":"#FFFFFF","secondaryColor":"#FFFFFF","tertiaryColor":"#FFFFFF","primaryTextColor":"#0F172A","secondaryTextColor":"#0F172A","tertiaryTextColor":"#0F172A","lineColor":"#64748B","clusterBkg":"#FFFFFF","clusterBorder":"#CBD5E1","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%%
flowchart LR
    A["Proposed change"] --> B{"Target surface"}
    B -->|Mirrored page| C["Preserve markup and visual language"]
    B -->|Bespoke page| D["Use explicit React composition"]

    C --> E["Minimal traceable transformation"]
    D --> F["Scoped classes and controlled motion"]

    E --> G["Route and asset validation"]
    F --> G
    G --> H{"Claims and accessibility valid?"}
    H -->|Yes| I["Ready for review"]
    H -->|No| J["Revise before merge"]

    classDef input fill:#FFFFFF,stroke:#475569,color:#0F172A,stroke-width:2px;
    classDef mirror fill:#FFFFFF,stroke:#2563EB,color:#1E3A8A,stroke-width:2px;
    classDef bespoke fill:#FFFFFF,stroke:#7C3AED,color:#4C1D95,stroke-width:2px;
    classDef gate fill:#FFFFFF,stroke:#D97706,color:#78350F,stroke-width:2px;
    classDef pass fill:#FFFFFF,stroke:#16A34A,color:#14532D,stroke-width:2px;
    classDef fail fill:#FFFFFF,stroke:#DC2626,color:#7F1D1D,stroke-width:2px;

    class A,B input;
    class C,E mirror;
    class D,F bespoke;
    class G,H gate;
    class I pass;
    class J fail;
Loading
Preserve the source design.
Keep user-facing copy in Bahasa Indonesia.
Do not mix mirrored and bespoke rendering patterns.
Do not hand-edit generated mirrored assets.
Do not introduce motion that reduces clarity or accessibility.
Do not claim backend capability that this repository does not provide.

MIRRORED PAGES

  • Preserve markup structure and class names.
  • Make minimal, traceable transformations.
  • Route known destinations through React.
  • Retain editorial and typographic character.
  • Re-run the mirror when new eligible assets are introduced.

BESPOKE PAGES

  • Use a clear component boundary.
  • Namespace visual classes by page or feature.
  • Keep GSAP timelines locally scoped.
  • Reuse shared site chrome.
  • Maintain keyboard and escape behavior.

CONTENT LANGUAGE

  • User-facing content remains Indonesian.
  • Technical documentation may use English where it improves precision.
  • Product claims must match implemented capability.
  • Editorial tone remains calm, credible, and human-centered.

10 · DATA, PRIVACY, AND AI BOUNDARY

The broader El-Kayyisa service may use student and parent contact details, learning targets, schedules, attendance, tutor notes, learning activity, payment information, and Smartboard summaries or recommendations.

This repository itself is a frontend codebase, not the operational student information system.

%%{init: {"theme":"base","themeVariables":{"background":"#FFFFFF","primaryColor":"#FFFFFF","secondaryColor":"#FFFFFF","tertiaryColor":"#FFFFFF","primaryTextColor":"#0F172A","secondaryTextColor":"#0F172A","tertiaryTextColor":"#0F172A","lineColor":"#64748B","clusterBkg":"#FFFFFF","clusterBorder":"#CBD5E1","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%%
flowchart LR
    A["Public frontend repository"] --> B["Static presentation content"]
    A --> C["Illustrative Smartboard surface"]

    D["PROHIBITED: Real student data"] -.-> A
    E["PROHIBITED: Secret credentials"] -.-> A
    F["PROHIBITED: Unreviewed AI judgment"] -.-> A

    C --> G["Future protected backend"]
    G --> H["Role-based access"]
    G --> I["Consent and retention controls"]
    G --> J["Audit trail"]
    G --> K["Protected AI services"]
    K --> L["Human review"]
    L --> M["Educational decision"]

    classDef frontend fill:#FFFFFF,stroke:#2563EB,color:#1E3A8A,stroke-width:2px;
    classDef prohibited fill:#FFFFFF,stroke:#DC2626,color:#7F1D1D,stroke-width:2px;
    classDef protected fill:#FFFFFF,stroke:#7C3AED,color:#4C1D95,stroke-width:2px;
    classDef governance fill:#FFFFFF,stroke:#D97706,color:#78350F,stroke-width:2px;
    classDef human fill:#FFFFFF,stroke:#16A34A,color:#14532D,stroke-width:2px;

    class A,B,C frontend;
    class D,E,F prohibited;
    class G,H,I,J,K protected;
    class L governance;
    class M human;
Loading
NO REAL STUDENT DATA IN STATIC SOURCE.
NO SECRET KEYS IN CLIENT CODE.
NO AI OUTPUT PRESENTED AS FINAL EDUCATIONAL JUDGMENT.
NO OPERATIONAL SMARTBOARD CLAIM WITHOUT A VERIFIED BACKEND.

Any future operational Smartboard integration should add, at minimum:

  • authenticated role-based access;
  • parent or guardian consent handling;
  • least-privilege data access;
  • server-side validation;
  • audit trails;
  • retention and deletion controls;
  • protected AI service calls;
  • explicit human review of recommendations;
  • incident and recovery procedures.

Sentra AI should strengthen tutor and parent judgment. It must not silently replace educational responsibility.


11 · VALIDATION GATES

%%{init: {"theme":"base","themeVariables":{"background":"#FFFFFF","primaryColor":"#FFFFFF","secondaryColor":"#FFFFFF","tertiaryColor":"#FFFFFF","primaryTextColor":"#0F172A","secondaryTextColor":"#0F172A","tertiaryTextColor":"#0F172A","lineColor":"#64748B","clusterBkg":"#FFFFFF","clusterBorder":"#CBD5E1","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%%
flowchart LR
    A["Focused change"] --> B["TypeScript typecheck"]
    B --> C["Production build"]
    C --> D["Route verification"]
    D --> E["Responsive interaction review"]
    E --> F["Smartboard motion review"]
    F --> G["Privacy and legal route review"]
    G --> H["SPA fallback verification"]
    H --> I["Merge-ready evidence"]

    B -.-> X["Repair"]
    C -.-> X
    D -.-> X
    E -.-> X
    F -.-> X
    G -.-> X
    H -.-> X
    X --> B

    classDef start fill:#FFFFFF,stroke:#475569,color:#0F172A,stroke-width:2px;
    classDef automated fill:#FFFFFF,stroke:#2563EB,color:#1E3A8A,stroke-width:2px;
    classDef manual fill:#FFFFFF,stroke:#7C3AED,color:#4C1D95,stroke-width:2px;
    classDef pass fill:#FFFFFF,stroke:#16A34A,color:#14532D,stroke-width:2px;
    classDef repair fill:#FFFFFF,stroke:#DC2626,color:#7F1D1D,stroke-width:2px;

    class A start;
    class B,C automated;
    class D,E,F,G,H manual;
    class I pass;
    class X repair;
Loading

Before a change is considered ready:

npm run typecheck
npm run build

Then verify manually:

  • all routes load directly and through internal navigation;
  • the mobile menu opens, closes, and responds to Escape;
  • page scrolling is restored after overlays close;
  • mirrored-page FAQ behavior still works;
  • navbar scroll behavior remains stable;
  • Smartboard motion creates no layout shifts or console errors;
  • privacy and terms pages remain reachable;
  • unknown routes redirect to /services;
  • production hosting returns the SPA shell for direct route requests.

CURRENT TESTING STATUS

Gate Current state Classification
Strict TypeScript validation Present Automated
Production build Present Automated
Visual and interaction verification Present Manual
Lint command Not configured Gap
Unit and component tests Not configured Gap
End-to-end browser tests Not configured Gap
Accessibility regression tests Not configured Gap

This README does not assume CI coverage that is not expressed by the current repository scripts.


12 · DEPLOYMENT CONTRACT

%%{init: {"theme":"base","themeVariables":{"background":"#FFFFFF","primaryColor":"#FFFFFF","secondaryColor":"#FFFFFF","tertiaryColor":"#FFFFFF","primaryTextColor":"#0F172A","secondaryTextColor":"#0F172A","tertiaryTextColor":"#0F172A","lineColor":"#64748B","clusterBkg":"#FFFFFF","clusterBorder":"#CBD5E1","fontFamily":"Inter, ui-sans-serif, system-ui"}}}%%
flowchart LR
    A["Repository source"] --> B["npm run build"]
    B --> C["TypeScript validation"]
    C --> D["Vite production bundle"]
    D --> E["dist/"]
    E --> F["Static hosting platform"]
    F --> G{"Direct application route"}
    G -->|Known asset| H["Serve asset"]
    G -->|SPA route| I["Rewrite to index.html"]
    I --> J["BrowserRouter resolves page"]

    classDef source fill:#FFFFFF,stroke:#475569,color:#0F172A,stroke-width:2px;
    classDef build fill:#FFFFFF,stroke:#2563EB,color:#1E3A8A,stroke-width:2px;
    classDef output fill:#FFFFFF,stroke:#7C3AED,color:#4C1D95,stroke-width:2px;
    classDef hosting fill:#FFFFFF,stroke:#F97316,color:#7C2D12,stroke-width:2px;
    classDef resolved fill:#FFFFFF,stroke:#16A34A,color:#14532D,stroke-width:2px;

    class A source;
    class B,C,D build;
    class E output;
    class F,G,H,I hosting;
    class J resolved;
Loading

The application builds as a Vite single-page application. The hosting platform must support SPA rewrites so direct visits to routes such as /smartboard and /kebijakan-privasi do not return 404.

No platform-specific deployment contract was identified in the inspected application files. Add deployment configuration only for the platform actually used; do not accumulate speculative files.


13 · KNOWN LIMITATIONS

Area Current state Recommended next action
Static shell metadata index.html still uses the legacy title Aeline; mirrored pages update metadata only after JavaScript runs. Replace shell metadata with El-Kayyisa defaults and verify social previews.
Backend capability No authentication, database, student records, tutor portal, or operational Smartboard API is present. Keep frontend claims bounded until the backend exists and is verified.
Automated testing No lint, unit, component, accessibility, or E2E suite is configured. Add the smallest useful CI gate after stabilizing the current interface.
HTML trust boundary Mirrored pages use dangerouslySetInnerHTML after parsing trusted snapshots. Treat snapshots as reviewed code and never accept untrusted HTML input.
Source dependency Asset refresh depends on https://aeline.temlis.workers.dev. Preserve reviewed local assets and document future source migration.
Legacy route slugs Some technical routes retain generic template names. Rename only through an explicit migration with redirect coverage.
Licensing No standalone repository LICENSE file is present. Add a license only after ownership and distribution terms are approved.

14 · CONTRIBUTION PROTOCOL

  1. Create a focused branch from main.
  2. Keep the change limited to one clear objective.
  3. Identify whether the target page is mirrored or bespoke before editing.
  4. Avoid unrelated design rewrites and broad generated-asset changes.
  5. Run typecheck and the production build.
  6. Perform direct-route and responsive visual checks.
  7. Explain new data, security, accessibility, or source-origin implications in the pull request.

COMMIT STYLE

Use short, intentional messages:

docs: add comprehensive project README
fix: correct mobile navigation overflow
feat: add tutoring contact route
refactor: isolate smartboard motion lifecycle

15 · SECURITY AND RESPONSIBLE DISCLOSURE

Do not place student information, parent information, payment details, private screenshots, credentials, or production endpoints in issues, pull requests, commits, or frontend source files.

For security-sensitive findings:

  • avoid publishing exploit details in a public issue;
  • contact the repository owner privately through the GitHub profile;
  • include affected route or component, reproduction conditions, impact, and a minimal remediation proposal;
  • remove all real personal data from evidence.

Repository owner: @drferdii


16 · OWNERSHIP AND LICENSE STATUS

The repository does not currently contain a standalone open-source license. Therefore, no permission to copy, redistribute, modify, or commercialize the code should be assumed.

The in-application Terms of Service state that:

  • the work was created by Sentra for El-Kayyisa;
  • economic rights are held by El-Kayyisa;
  • moral rights remain attached to Sentra as creator, subject to applicable Indonesian copyright law.

For formal reuse or distribution, obtain written authorization from the rights holder.


17 · TECHNOLOGY INSTRUMENTATION

INTERFACE

React 19.2.8 TypeScript 5.9.3 Tailwind CSS 4.3.3

APPLICATION TOOLING

Vite 8.2.0 React Router 7.18.2 npm

MOTION AND GOVERNANCE

GSAP 3.15.0 Typecheck required Human review required

EL-KAYYISA

Personal tutoring built around understanding, continuity, and meaningful progress.

Learning with direction

SENTRA ARTIFICIAL INTELLIGENCE

Intelligent digital systems designed to strengthen human capability and institutional continuity.

Intelligence with purpose

Guided by Human Insight, Powered by Artificial Intelligence.
El-Kayyisa × Sentra Artificial Intelligence · Indonesia
// intelligence with purpose · learning with direction

About

Smart tutoring management dashboard designed to streamline administrative workflows and enhance the student-teacher experience. Built with an intuitive smartboard interface, it simplifies scheduling, progress tracking, and real-time collaboration for educational institutions.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages