$ show jungang/alumnet
Alumnet is a full-stack, AI-powered alumni exhibition and management system designed for school history museums. It consists of three workspaces: a touch-screen kiosk frontend (client) built with Vue 3, Three.js, and Tailwind CSS; an admin dashboard (admin) using Vue 3 and Element Plus; and a backend server (server) built with Express, TypeScript, PostgreSQL (with pgvector), and Qdrant for vector search. The system provides alumni CRUD, AI-powered natural language search via RAG, 3D galaxy visualization, timeline corridor, interactive message boards, video greetings, donation management, and comprehensive admin controls including content audit, backup/restore, and data import. It features JWT authentication with role-based access, privacy data masking, rate limiting, and a layered architecture (routes → services → repositories). The codebase includes extensive testing (unit, integration, property-based with fast-check) and is deployable via Docker Compose or PM2. While primarily an application, it incorporates data engineering patterns through its RAG pipeline and knowledge base management.
The LLM identified 5 files worth highlighting for reuse:
Builds dynamic SQL WHERE conditions from filter parameters (department, graduation year, etc.) with case-insensitive matching and validation. Includes a `validateFilterMatch` helper. Property-tested for correctness. Could be extracted as a standalone utility for any Node.js/PostgreSQL project needing flexible filtering.
Provides `maskPhone` and `maskEmail` functions to obfuscate personal data (e.g., '138****5678', 't***[email protected]') based on visibility levels. Includes batch processing for arrays of records. Demonstrates a clean, reusable pattern for PII protection that can be applied to any application handling sensitive user data.
A Vue 3 composable that detects swipe gestures (left, right, up, down) on touch devices. Returns reactive state for swipe direction and distance. Self-contained, framework-agnostic gesture logic that can be reused in any Vue 3 project requiring mobile swipe interactions.
Implements a centralized error handling middleware with a custom `AppError` class hierarchy (NotFoundError, ValidationError, etc.) and an `asyncHandler` wrapper for async route handlers. Provides consistent JSON error responses with status codes and logging. This pattern is directly reusable in any Express application for robust error management.
Provides an `InMemoryStore<T>` generic class for simulating database operations in tests, along with Arbitrary generators for random alumni data, messages, etc. Used by property-based tests (fast-check) to verify invariants like CRUD consistency and data masking. This test infrastructure pattern can be extracted for any project adopting property-based testing.