A modern and elegant note-taking platform that helps users create, organize, and manage notes through a clean, responsive, and intuitive workspace.
| Dashboard | All Notes |
|---|---|
![]() |
![]() |
| AI Assistant | Categories |
|---|---|
![]() |
![]() |
| Profile | Settings |
|---|---|
![]() |
![]() |
- Create, edit, and manage notes
- Organize notes with categories
- Search and filter notes instantly
- Pin and favorite important notes
- AI-powered writing assistant
- Productivity dashboard with insights
- Secure user authentication
- Fully responsive interface
- Backend-ready architecture for future Spring Boot integration
- HTML5
- CSS3
- JavaScript
- Tailwind CSS
- LocalStorage
Rawabi Notes is designed as a modern productivity workspace that enables users to create, organize, and manage notes through an intuitive interface. The current version focuses on a fully interactive frontend powered by localStorage while maintaining a backend-ready architecture for future integration with Spring Boot and MySQL.
No build step, no dependencies. Serve the folder with any static server:
# from the project root
python3 -m http.server 5500
# then open http://localhost:5500/index.htmlOpening the files directly via file:// also works, but a local server is
recommended so relative asset paths resolve consistently.
A demo account and a populated sample workspace are seeded on first run:
Email: demo@rawabi.app
Password: demo1234
Or use Create an Account to register a fresh user — everything is stored locally in your browser.
| File | Screen |
|---|---|
index.html |
Splash → routes to dashboard / login |
login.html |
Sign in |
register.html |
Create account (two-column branding) |
dashboard.html |
Dashboard: stats, quick actions, recent notes |
all-notes.html |
Notes grid: filter, sort, pin / favorite / delete |
create-note.html |
Editor: create & edit (?id= to edit) |
categories.html |
Category cards + create / delete |
ai-assistant.html |
AI actions (summarize / title / tags) + output |
search-results.html |
Search with match highlighting (?q=) |
settings.html |
Appearance / language / notifications / AI |
profile.html |
Editable profile, export data, stats |
empty-state.html |
Empty notes state |
404.html |
Not-found page (mouse parallax) |
rawabi-notes/
├── index.html · login.html · register.html · dashboard.html · … # screens
├── css/
│ └── styles.css # app shell, component classes, toasts, drawer
├── js/
│ ├── tailwind.config.js # design tokens (colors, type, spacing) from DESIGN.md
│ ├── api.js # RawabiAuth + RawabiApi — mock store, REST-ready
│ └── shell.js # injects the shared sidebar + top bar into every page
├── DESIGN.md # the source design system / brand guide
├── LICENSE
└── README.md
js/tailwind.config.js— a 1:1 translation ofDESIGN.md: the full color system, the Geist/Inter type scale (each token carries its own weight, line-height and tracking), the 8pt spacing scale, radii and container widths.css/styles.css— the custom layer on top of the tokens: the app shell layout,card-shadow/note-card-hover/modal-*/input-focus-ring, toasts, the mobile drawer, and a defensive Material Symbols base rule so icons always render as glyphs.js/api.js— a unifiedRawabiAuth+RawabiApidata layer. Runs on a localStorage mock (USE_BACKEND = false) so every screen is interactive with no server. Its method surface matches the planned REST endpoints exactly.js/shell.js— injects the canonical sidebar + top bar into every app page (driven by each page'sdata-active/data-title) and providesRawabiShell.toast().
- Markup / styling: HTML5, Tailwind CSS (Play CDN,
forms+container-queries) - Logic: vanilla JavaScript (no framework, no bundler)
- Type: Geist (chrome) + Inter (content) via Google Fonts
- Icons: Material Symbols Outlined
- Persistence (Phase 1): browser
localStorage - Planned backend (later phase): Java Spring Boot · MySQL · REST (Controller / Service / Repository / Entity / DTO)
The client is written so backend integration is a switch, not a rewrite:
// js/api.js
const USE_BACKEND = false; // → true to call the Spring Boot REST API
const API_BASE = '/api';The mock and the REST shim expose an identical surface
(RawabiApi.auth / notes / categories), so no screen changes when the flag flips.
- Push this folder to a GitHub repository.
- Settings → Pages → Build and deployment → Source: Deploy from a branch.
- Select your default branch and the
/ (root)folder, then Save. - Your site publishes at
https://<user>.github.io/<repo>/.
Because it's fully static, it also drops straight onto Netlify, Vercel, Cloudflare Pages or any static host.
Released under the MIT License.





