Skip to content

About

LingUBible - Course & Lecturer Reviews

Topics

Resources

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

ย 

History

1,304 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

LingUBible Logo

Let every review be a guiding light on your learning journey

English ็น้ซ”ไธญๆ–‡ ็ฎ€ไฝ“ไธญๆ–‡

React TypeScript Vite Tailwind CSS Appwrite ECharts

Deployed to Appwrite Sites License: MIT PRs Welcome Maintenance

Ko-fi


๐ŸŒŸ A course and lecturer review platform designed specifically for Lingnan University students

Helping students make informed academic choices and share authentic learning experiences

๐Ÿš€ Get Started โ€ข ๐Ÿ“– Documentation โ€ข ๐Ÿค Contributing โ€ข ๐ŸŒ Multi-language Support


๐ŸŒ Live Demo

LingUBible is live and serving Lingnan University students at:

Browse courses and lecturers, read and write reviews, and explore interactive grade distributions โ€” no installation required. Sign-up requires a valid Lingnan University email.


โœจ Core Features

Feature Description Status
๐Ÿ“ Course Reviews Detailed reviews covering workload, difficulty, grade and teaching, with helpful/unhelpful voting โœ…
๐Ÿ‘จโ€๐Ÿซ Lecturer Reviews Per-instructor ratings broken down by teaching session (lecture / tutorial) โœ…
๐Ÿ“Š Interactive Grade Charts Grade distribution as bar, stacked and box-plot views (ECharts), with cumulative line, GPA, and N/A toggle โœ…
๐Ÿ“„ Past Exam Papers Browse, sort and filter past papers by year and instructor, with multi-select batch ZIP download โœ…
๐Ÿ“‘ Course Syllabus View the latest course syllabus directly from the course page โœ…
โญ Favorites Save favourite courses and instructors for quick access โœ…
๐Ÿ” Smart Search Fast course and lecturer search, including instructor nickname matching โœ…
๐Ÿ›๏ธ Faculty & Department Badges Multi-department support for courses and instructors โœ…
๐Ÿ” Student Verification Lingnan email verification, Google OAuth, and reCAPTCHA protection โœ…
๐ŸŒ Multi-language Support English, Traditional Chinese, and Simplified Chinese โœ…
๐Ÿ“ˆ Personal Statistics Personal dashboard with your review history and votes received โœ…
๐Ÿ“ฑ PWA & Responsive Installable progressive web app that adapts to every screen size โœ…
๐ŸŒ™ Theme Toggle Seamless switching between dark and light themes โœ…

๐Ÿ› ๏ธ Technical Architecture

๐Ÿ—๏ธ Tech Stack

Category Technology Version Purpose
๐ŸŽจ Frontend React 18.3.1 UI Framework
TypeScript 5.5.3 Type Safety
Vite 7.0.0 Build Tool
Tailwind CSS 3.4.17 Styling
shadcn/ui ยท Radix UI Latest UI Components
ECharts 5.6.0 Data Visualization & Charts
React Router 6.26.2 Routing
TanStack Query 5.56.2 Data Fetching & Caching
Zod 3.23.8 Schema Validation
๐Ÿ”ง Backend Appwrite 19.0.0 BaaS (Auth, TablesDB, Storage, Functions)
Resend - Transactional Email
Google reCAPTCHA v3 - Bot Protection
๐Ÿ“ฆ Tools Bun Latest Package Manager & Runtime
ESLint Latest Code Linting
PostCSS Latest CSS Processing
Custom i18n - Internationalization
graph TD
    subgraph "๐ŸŽจ Frontend Stack"
        A[React 18.3.1]
        B[TypeScript 5.5.3]
        C[Vite 7.0.0]
        D[Tailwind CSS]
        E[shadcn/ui]
    end
    
    subgraph "๐Ÿ”ง Backend Services"
        F[Appwrite 19.0.0]
        G[Resend Email]
        H[Auth & TablesDB]
    end
    
    subgraph "๐Ÿ“ฆ Development Tools"
        I[ESLint]
        J[PostCSS]
        K[i18n]
    end
    
    style A fill:#61dafb
    style B fill:#3178c6
    style C fill:#646cff
    style D fill:#06b6d4
    style E fill:#000000
    style F fill:#fd366e
    style G fill:#ea4335
    style H fill:#4285f4
    style I fill:#4b32c3
    style J fill:#dd3a0a
    style K fill:#009688
Loading

๐Ÿ›๏ธ Project Architecture

graph TD
    A[๐Ÿ  lingubible] --> B[๐Ÿ“ src]
    A --> C[๐Ÿ“š docs]
    A --> D[๐Ÿ› ๏ธ tools]
    A --> E[๐ŸŒ public]
    A --> F[โš™๏ธ functions]
    
    B --> B1[๐Ÿงฉ components]
    B --> B2[๐Ÿ“„ pages]
    B --> B3[๐Ÿ”ง services]
    B --> B4[๐ŸŽฃ hooks]
    B --> B5[๐Ÿ› ๏ธ utils]
    B --> B6[๐Ÿ“ types]
    
    B1 --> B1A[auth]
    B1 --> B1B[layout]
    B1 --> B1C[user]
    B1 --> B1D[common]
    B1 --> B1E[features]
    B1 --> B1F[ui]
    
    B2 --> B2A[auth]
    B2 --> B2B[user]
    B2 --> B2D[legal]
    
    style A fill:#e1f5fe
    style B fill:#f3e5f5
    style C fill:#e8f5e8
    style D fill:#fff3e0
    style E fill:#fce4ec
    style F fill:#f1f8e9
Loading

๐Ÿ“‚ Directory Structure Overview

Directory Purpose Key Components
๐Ÿ“ src/ Source code Main application code
โ”œโ”€โ”€ ๐Ÿงฉ components/ React components UI building blocks
โ”œโ”€โ”€ ๐Ÿ“„ pages/ Page components Route-level components
โ”œโ”€โ”€ ๐Ÿ”ง services/ API services External service integrations
โ”œโ”€โ”€ ๐ŸŽฃ hooks/ Custom Hooks Reusable React logic
โ”œโ”€โ”€ ๐Ÿ› ๏ธ utils/ Utility functions Helper functions and constants
โ””โ”€โ”€ ๐Ÿ“ types/ TypeScript types Type definitions
๐Ÿ“š docs/ Documentation Project documentation
๐Ÿ› ๏ธ tools/ Development tools Build scripts and utilities
๐ŸŒ public/ Static assets Images, icons, manifest
โš™๏ธ functions/ Cloud functions Serverless functions

โšก Performance & Optimization

LingUBible is tuned to stay fast and responsive on Appwrite's infrastructure.

  • ๐Ÿงฉ Code splitting โ€” vendor, UI, charts and locale code are split into separate chunks so the initial payload stays lean and rarely-used code loads on demand.
  • ๐Ÿ—‚๏ธ Passive multi-layer caching โ€” in-memory + localStorage write-through TTL caches back the heavy aggregate reads (teaching records, term/language stats), serving repeat visits instantly without any background polling.
  • ๐Ÿ”ค Font subsetting โ€” the LXGW WenKai CJK font is subset at build time to ship only the glyphs actually used.
  • ๐ŸŒ Lazy-loaded locales โ€” each language bundle is dynamically imported only when selected.
  • โšก Bun + Vite 7 โ€” fast installs, near-instant dev startup, and snappy hot module replacement.

๐Ÿš€ Quick Start

๐Ÿ“‹ System Requirements

  • Node.js: >= 20.19.0 (Required for Vite 7)
  • bun: >= 1.0.0 (Fast JavaScript runtime & package manager)
  • Git: Latest version

โšก Why Bun?

We've migrated from npm to Bun for enhanced development experience:

  • ๐Ÿš€ Lightning Fast: Up to 25x faster than npm for package installation
  • ๐Ÿ”ง All-in-One: Runtime, bundler, test runner, and package manager
  • ๐Ÿ“ฆ Drop-in Replacement: Compatible with npm packages and scripts
  • ๐Ÿ›ก๏ธ Built-in Security: Automatic lockfile verification
  • ๐Ÿ’พ Efficient Caching: Smart dependency caching reduces install times

๐Ÿš€ Vite 7 - Next Generation Build Tool

We've upgraded to Vite 7 for cutting-edge development performance:

  • โšก Enhanced Performance: Improved build speeds and optimizations
  • ๐ŸŽฏ Modern Browser Support: Chrome 107+, Firefox 104+, Safari 16.0+
  • ๐Ÿ”ง Better Tree Shaking: More efficient bundle optimization
  • ๐Ÿ“ฆ Improved HMR: Faster hot module replacement
  • ๐Ÿ› ๏ธ Enhanced Plugin System: Better plugin compatibility and performance
  • ๐ŸŽจ Advanced CSS Features: Improved CSS processing and optimization

โšก Quick Installation

# 1๏ธโƒฃ Clone the project
git clone https://github.com/ansonlo-dev/LingUBible.git
cd LingUBible

# 2๏ธโƒฃ Install dependencies
bun install
# Fast and reliable package manager

# 3๏ธโƒฃ Environment setup
cp env.example .env.local

# 4๏ธโƒฃ Start development server
bun run dev
# Lightning fast development experience

๐Ÿ”ง Environment Configuration

๐Ÿ“ Click to view detailed configuration steps
  1. Copy environment variable template

    cp env.example .env.local
  2. Configure the required environment variables

    # Frontend (Appwrite client)
    VITE_APPWRITE_ENDPOINT=your_appwrite_endpoint
    VITE_APPWRITE_PROJECT_ID=your_project_id
    
    # Frontend (Google reCAPTCHA v3 โ€” public site key)
    VITE_RECAPTCHA_SITE_KEY=your_recaptcha_site_key
    
    # Dev mode: allow any email to register (NEVER enable in production)
    VITE_DEV_MODE=false
    
    # Server-side / cloud functions (keep secret)
    APPWRITE_API_KEY=your_appwrite_api_key
    RESEND_API_KEY=your_resend_api_key
    RECAPTCHA_SECRET_KEY=your_recaptcha_secret_key
  3. Refer to the detailed setup guides

๐ŸŽฏ Available Scripts

# ๐Ÿš€ Development
bun run dev              # Start dev server on :8080 (--host enabled)
bun run build            # Production build (output: dist/)
bun run build:fast       # Production build, skipping font subsetting
bun run preview          # Preview the production build

# ๐Ÿ” Code Quality
bun run lint             # ESLint
bun run refactor:check   # Build + sanity check ("did I break it?")

# โ˜๏ธ Backend
bun run deploy:functions # Deploy Appwrite cloud functions

# ๐Ÿ”ค Fonts & Tooling
bun run fonts:rebuild    # Re-subset the LXGW WenKai font
bun run project:structure # Print the src/ tree

Deployment: the frontend auto-deploys to Appwrite Sites via the Appwrite โ†” GitHub integration โ€” pushing to main triggers a build. Cloud functions deploy separately with bun run deploy:functions.


๐ŸŒ Language / ่ชž่จ€

Language README Documentation Status
English README.md Documentation โœ… Complete
็น้ซ”ไธญๆ–‡ README.md ๆ–‡ๆช” โœ… Complete
็ฎ€ไฝ“ไธญๆ–‡ README.md ๆ–‡ๆกฃ โœ… Complete

๐Ÿ“– Documentation Navigation

๐Ÿ“š Complete Documentation Structure

Category Content Link
๐Ÿ”ง Setup Guide Environment variables, dev mode, email verification, reCAPTCHA ๐Ÿ“– Setup
โšก Feature Documentation Avatar system, multilingual implementation, email templates, security ๐Ÿ“– Features
๐Ÿš€ Deployment Guide Appwrite Sites Git deployment ๐Ÿ“– Deployment
๐Ÿ› ๏ธ Development Documentation Project structure, Bun-only setup, functions analysis ๐Ÿ“– Development

๐Ÿค Contributing

๐ŸŒŸ Welcome to contribute!

We welcome all forms of contributions, whether it's code, documentation, design, or idea sharing.

Contributors

๐Ÿ“ Contribution Guide

  1. ๐Ÿด Fork the project
  2. ๐ŸŒฟ Create feature branch (git checkout -b feature/AmazingFeature)
  3. ๐Ÿ’พ Commit changes (git commit -m 'Add some AmazingFeature')
  4. ๐Ÿ“ค Push to branch (git push origin feature/AmazingFeature)
  5. ๐Ÿ”„ Create Pull Request

๐Ÿ“‹ Contribution Types

  • ๐Ÿ› Bug Fixes - Help us fix issues
  • โœจ New Features - Add useful new functionality
  • ๐Ÿ“ Documentation Improvements - Enhance project documentation
  • ๐ŸŽจ UI/UX Improvements - Improve user experience
  • ๐ŸŒ Translations - Support more languages
  • ๐Ÿงช Testing - Increase test coverage

๐Ÿ“– Detailed Guides


๐Ÿ“Š Project Statistics

GitHub stars GitHub forks GitHub watchers

GitHub issues GitHub pull requests GitHub last commit

GitHub code size GitHub repo size


โค๏ธ Support This Project

๐ŸŒŸ Help Keep LingUBible Growing!

If you find LingUBible helpful for your academic journey, consider donating to support development. Your donation helps:

  • ๐Ÿš€ Add New Features - Continuously improve the platform
  • ๐Ÿ› Fix Bugs & Issues - Maintain a stable experience
  • ๐ŸŒ Expand Language Support - Reach more students
  • ๐Ÿ“ฑ Improve Performance - Optimize for better user experience
  • ๐ŸŽจ Enhance UI/UX - Create a more beautiful interface

โ˜• Support LingUBible

Support LingUBible

Every contribution, no matter how small, makes a difference! ๐Ÿ™

Ko-fi

๐Ÿช™ Crypto

Prefer crypto? Any of these works. Donations go towards the running costs โ€” servers, database and domain.

Coin Network Address
BTC Bitcoin Bitcoin bc1qj02ac5ev682x53fplwl3428p5r69mzagsjz4lk
ETH Ethereum Ethereum 0x0357d369d45Effe1D3eD7b8aD12C2ecCe3F8184d
USDT Tether Ethereum ยท ERC20 0x0357d369d45Effe1D3eD7b8aD12C2ecCe3F8184d
USDT Tether Tron ยท TRC20 THCM3Wjjwd6ReUathuKnyfjaDcvUwSJWUC
SOL Solana Solana 9sA9FgqtGfpKZmBv2SSTvfAWkxHgqrMkXSeA1NNKsi5y
TRX Tron Tron THCM3Wjjwd6ReUathuKnyfjaDcvUwSJWUC
GRAM Gram TON UQCXzRzkqkXXkzq_pUm54dLPrdPW8CRG-KlVzjSubG0unyuD
BNB BNB Smart Chain ยท Ethereum 0x5a6A922F36707ba558Eaf0c14B6cc8B0a2728f03
DOGE Dogecoin Dogecoin DPmDppqWZ34UqJktXvHLauXQuuWrteL4C5
XRP XRP Ledger rKQidLa6dUX7ucYgHUimtwe9vwLMWvNCEK
LTC Litecoin Litecoin ltc1qfrfa9fgqyr89d5d9ee5cr3sptcmkwl94z00tfj
ZEC Zcash Zcash ยท transparent t1Rve5CMcqfBb2yaFDzRTVF9nBTwKPNaRY3

Note ยท ETH and USDT (ERC20) share one EVM address, and TRX and USDT (TRC20) share one Tron address โ€” that is expected, a single account receives both. The Zcash address is a transparent (t-addr) one, so shielded transfers are not supported.

๐ŸŽฏ Other Ways to Support

  • โญ Star this repository - Help others discover LingUBible
  • ๐Ÿ› Report bugs - Help us improve the platform
  • ๐Ÿ’ก Suggest features - Share your ideas with us
  • ๐Ÿ“ Contribute code - Join our development team
  • ๐ŸŒ Spread the word - Tell your friends about LingUBible

๐Ÿ† Acknowledgments

๐Ÿ’ Special Thanks

๐Ÿ“š LingUBible's success is inseparable from the following support:

Category Thanks to
๐Ÿ› ๏ธ Technical Support React, TypeScript, Vite 7, Tailwind CSS, Appwrite and other open source projects
๐ŸŽจ Design Inspiration shadcn/ui, Radix UI, Lucide Icons and other design systems
๐ŸŒ Community Support GitHub, Stack Overflow, Reddit and other developer communities
๐ŸŽ“ User Feedback Valuable opinions and suggestions from Lingnan University student community
โค๏ธ Development Team Hard work of all contributors and maintainers

๐ŸŒŸ Open Source Spirit

This project adheres to the open source spirit and is committed to:

  • ๐Ÿ“– Knowledge Sharing - Share technical experience and best practices
  • ๐Ÿค Community Collaboration - Welcome everyone to participate and contribute
  • ๐Ÿš€ Continuous Improvement - Continuously optimize and improve functionality
  • ๐ŸŒ Serving Society - Contribute to education

๐Ÿ“„ License

๐Ÿ“œ MIT License

This project is licensed under the MIT License

Copyright (c) 2026 LingUBible

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

๐Ÿš€ Let's build a better learning environment together!

โญ If this project helps you, please give us a Star!

GitHub stars


๐Ÿ”— Related Links

๐ŸŒ Official Website โ€ข ๐Ÿ“ง Contact Us โ€ข ๐Ÿ’ฌ Discussions โ€ข ๐Ÿ› Issue Reports


โš ๏ธ Disclaimer

This website has no official affiliation with Lingnan University. All reviews and opinions are personal views of users and do not represent the position of Lingnan University.


Built with โค๏ธ by ansonlo.dev | Powered by Open Source

About

LingUBible - Course & Lecturer Reviews

Topics

Resources

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Contributors

Languages