Skip to content

Latest commit

 

History

History
126 lines (87 loc) · 2.59 KB

File metadata and controls

126 lines (87 loc) · 2.59 KB

Library Management and Digital Archive System

This app uses a Tauri (React + TypeScript) frontend and connects directly to Supabase from Libapp/src/api.ts.


Tech Stack

  • Frontend: Tauri, React, TypeScript, Tailwind CSS
  • Database: PostgreSQL (Supabase)
  • Languages: Rust, TypeScript, SQL

Prerequisites

  1. Node.js and npm
  2. Rust (required for Tauri): https://www.rust-lang.org/tools/install
  3. Git

Setup

  1. Clone the repository.
  2. Open a terminal in Libapp.
  3. Install dependencies:
npm install
  1. Create Libapp/.env with Supabase credentials:
VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_PUBLISHABLE_KEY=your_publishable_key
SUPABASE_SECRET_KEY=your_secret_key

SUPABASE_SECRET_KEY is stored for server-side usage only and is not used by the frontend client.


Run

From Libapp:

npm run tauri dev

Authentication Notes

  • Users log in with:
  • Email + password, or
  • Username (full_name) + password (users.password).
  • Supported roles:
  • Member
  • Librarian
  • Admin

User Library Cards

  • Members have library_card_number.
  • Card numbers are unique.
  • Card number is shown on Profile.
  • User search supports card number in:
  • Users Management
  • Loans page (librarian/admin view)
  • Fines page (librarian/admin view)

Seeding Data

From repo root:

python Libapp/scripts/seed_supabase.py --wipe-all --book-source public-domain --books 400 --users 150 --librarians 12 --loans 250

Alternative source mix:

python Libapp/scripts/seed_supabase.py --wipe-all --book-source mixed --books 400 --users 150 --librarians 12 --loans 250

Seeder behavior:

  • Creates fixed users:
  • admin / admin (role Admin, email admin@library.com)
  • Librarian Admin (role Librarian)
  • Guest (role Member)
  • Generates unique/diverse names (uses faker if installed).
  • Generates random passwords for seeded users (except fixed admin).
  • Uses role-based email domains:
  • @library.com for Librarian/Admin
  • @example.com for Member

Project Structure

/libapp
  ├── src-tauri/          # Rust backend (Tauri Core)
  ├── src/
  │    ├── components/    # UI Components
  │    └── api.ts         # Supabase data-access layer
  ├── package.json
  └── tauri.conf.json

Troubleshooting

If books do not load:

  1. Verify Libapp/.env values are correct.
  2. Check browser/devtools console for Supabase errors.
  3. Confirm Supabase RLS policies allow the needed select/insert operations for your publishable key.