An open-source, Supabase-backed study companion for AWS Solutions Architect candidates. Build a personal cloud question bank, practice with curated quizzes, and track progress in a polished React experience.
- Highlights
- Architecture & Tech Stack
- Quick Start
- Environment Configuration
- Database Migrations
- Available Scripts
- Project Structure
- Contributing
- Roadmap
- License
- Supabase Auth – Email/password sign-in with per-user data isolation enforced at the database (RLS).
- Question Bank Management – Add questions manually or bulk import JSON; everything is scoped to the signed-in user.
- Curated Starter Library – Ships with an AWS Well-Architected question set that every user immediately sees when they sign in.
- Adaptive Quiz Flows – Filter by AWS service, category, or difficulty; get instant scoring and explanations.
- shadcn/ui Foundations – Responsive, accessible UI components styled with Tailwind CSS.
- Production-ready Build Pipeline – Vite + React 18 + TypeScript with ESLint and SWC for fast feedback loops.
| Layer | Details |
|---|---|
| Frontend | React 18, TypeScript, Vite 5 |
| UI Components | shadcn/ui, Radix UI, Tailwind CSS |
| State/Data | TanStack Query, React Hook Form, Zod |
| Authentication | Supabase Auth (email/password) |
| Persistence | Supabase PostgreSQL with row-level security |
| Tooling | ESLint, SWC, PostCSS, Tailwind CLI |
- Users authenticate via Supabase, establishing a session handled by
AuthProvider. - Authenticated pages call Supabase using service-generated types for safety.
- All question CRUD operations include the
user_id; database RLS guarantees tenant isolation. - Supabase migrations (SQL) define schema, triggers, and PostgREST refresh for cache consistency.
- Node.js ≥ 18.x and npm ≥ 9.x (nvm install guide)
- Supabase project with SQL editor or CLI access
git clone https://github.com/AbhiramVSA/awsify.git
cd awsify
npm install
cp .env.example .env # if you track an example file
# populate the environment variables listed below
supabase db push # apply schema & policies to your Supabase instance
npm run devVisit the application at http://localhost:8001.
Create a .env file in the project root with your Supabase credentials:
VITE_SUPABASE_URL=your-project-url
VITE_SUPABASE_PUBLISHABLE_KEY=your-anon-keyRetrieve these values from the Supabase dashboard under Project Settings → API.
Migrations live under supabase/migrations/ and should be applied before running the app.
supabase db pushThis command:
- Creates the
mcq_questionstable, indexes, and timestamp trigger. - Adds the
user_idcolumn with a foreign key toauth.users. - Installs row-level security (RLS) policies limiting reads/writes to the current user.
- Triggers a PostgREST schema cache reload so the new columns are immediately available to the API.
Copy the SQL files from supabase/migrations/ into the Supabase SQL editor and run them in order by timestamp.
| Command | Description |
|---|---|
npm run dev |
Start Vite dev server on port 8001 with hot reload |
npm run build |
Create an optimized production build |
npm run build:dev |
Build using development mode (useful for debugging) |
npm run preview |
Preview the production build locally |
npm run lint |
Run ESLint across the project |
Tests are not yet implemented. Contributions that introduce unit or integration tests are welcome.
src/
├── components/ # Reusable UI primitives (shadcn/ui)
├── hooks/ # Custom hooks (auth, mobile detection, toasts)
├── integrations/ # Supabase client + typed schema definitions
├── pages/ # Route-level screens (Dashboard, Quiz, Login, etc.)
├── providers/ # React context providers (AuthProvider)
└── lib/ # Utilities shared across the app
We welcome community contributions. To get started:
- Fork the repository and clone your fork.
- Create a feature branch (
git checkout -b feature/amazing-idea). - Write clear, conventional commits (
feat: …,fix: …, etc.). - Ensure
npm run lintandnpm run buildboth succeed. - Open a pull request describing your change and referencing any related issues.
Please open an issue before embarking on substantial work so we can coordinate efforts.
- Add unit tests for Supabase data hooks and quiz state transitions.
- Support question tagging and advanced filtering.
- Implement spaced-repetition practice mode.
- Add CI workflow (GitHub Actions) for lint/build/test automation.
Have an idea? Open an issue and let’s discuss it.
This project is licensed under the MIT License. See LICENSE for details.