How the-tylerlab/chemicallaboratory works
SciPortal is a laboratory-management application. Users enter through the browser UI, where the app initializes the session and loads operational data; domain modules then provide inventory, equipment, bookings, borrowing, procurement, budget, and reporting workflows. Shared API, state, and access-control layers support those features. The tree and excerpts establish the client-side calls, but the README is empty and the server implementation was not excerpted, so backend routing and persistence details are not mapped beyond a cautious client-to-server link.
Main entry points: main.js App startup · api.js API client · auth.js Authentication · rbac.js Role permissions
Components 19
App and shared services
- App startup
src/main.js - API client
src/core/api.js - App state
src/core/state.js - Shared utilities
src/core/utils.js - Application server
server.js
Identity and access
- Authentication
src/auth/auth.js - Login UI
src/auth/login-modal.js - Role permissions
src/rbac/rbac.js
Laboratory operations
- Inventory
src/inventory/inventory.js - Equipment
src/equipment/equipment.js - Room bookings
src/booking/booking.js - Borrowing
src/borrowing/borrowing.js - Procurement
src/procurement/procurement.js
Administration and insights
- Budget
src/budget/budget.js - User management
src/users/users.js - Dashboard
src/dashboard/dashboard.js - Announcements
src/notifications/notifications.js - Chatbot
src/chatbot/chatbot.js
Other components
- User
Connections 29
- User → App startup: opens app
src/main.js - App startup → Login UI: sets up
src/main.js - App startup → Authentication: verifies session
src/main.js - App startup → Inventory: loads items
src/main.js - App startup → Equipment: loads assets
src/main.js - App startup → Room bookings: loads bookings
src/main.js - App startup → Borrowing: loads transactions
src/main.js - App startup → Procurement: loads orders
src/main.js - App startup → Budget: loads budget
src/main.js - App startup → Announcements: loads announcements
src/main.js - App startup → Dashboard: updates metrics
src/main.js - App startup → API client: exposes client
src/main.js - App startup → App state: uses state
src/main.js - App startup → Shared utilities: exposes helpers
src/main.js - App startup → Role permissions: exposes permissions
src/main.js - Authentication → API client: uses auth client
src/auth/auth.js - Authentication → App state: sets user
src/auth/auth.js - Authentication → Shared utilities: normalizes input
src/auth/auth.js - Inventory → API client: requests data
src/inventory/inventory.js - Inventory → Role permissions: checks role
src/inventory/inventory.js - Room bookings → API client: requests bookings
src/booking/booking.js - Room bookings → Role permissions: checks role
src/booking/booking.js - Borrowing → API client: requests transactions
src/borrowing/borrowing.js - Procurement → API client: requests orders
src/procurement/procurement.js - Procurement → Budget: refreshes overview
src/procurement/procurement.js - Budget → API client: requests budget
src/budget/budget.js - Dashboard → API client: requests role view
src/dashboard/dashboard.js - Dashboard → Role permissions: checks role
src/dashboard/dashboard.js - App startup → Application server: calls backend