This is a web application for integrated lost and found management at Sejong University. It provides map-based lost item registration/search, real-time chat, and an administrator approval system.
Project Website: https://jin040907.github.io/UniLost/
Visit our Jekyll-powered website for an overview of the project, features, community information, and more.
Deployed Website: https://unilost.onrender.com
β οΈ Render's free plan enters sleep mode after 15 minutes of inactivity. There may be a slight delay when accessing it for the first time.
Full Documentation: https://unilost.readthedocs.io/
Comprehensive documentation including installation guides, API reference, configuration options, and more is available on Read the Docs.
- πΊοΈ Map-based Lost and Found Registration/Search: Location-based lost and found management using Leaflet maps
- π¬ Real-time Chat: Socket.IO-based global chat and item-specific threaded chat
- π€ User Authentication: Session-based login/logout system
- π Administrator Functions: Lost and found approval/rejection, storage location management
- πΎ Permanent Data Storage: Data preservation via PostgreSQL (production) / SQLite (local development) database
- π± Responsive Design: Supports both mobile and desktop
- Backend: Node.js, Express.js
- Database: PostgreSQL (production) / SQLite (local development)
- Real-time: Socket.IO
- Frontend: HTML, JavaScript, Tailwind CSS
- Maps: Leaflet.js, OpenStreetMap
- Documentation: Sphinx (Read the Docs), Jekyll (GitHub Pages)
Server:
- Node.js 18.0.0 or later (recommended: Node.js 20 LTS)
- npm 9.0.0 or later
- PostgreSQL (for deployment) or SQLite (for local development)
Client:
- Modern web browsers (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+)
- Mobile: iOS Safari 14+, Android Chrome 90+
For detailed documentation, see the Full Documentation.
# Clone the repository
git clone https://github.com/jin040907/UniLost.git
cd UniLost
# Install dependencies
npm install# Start the server
npm start
# or
node server.jsOnce the server is running, you can access it at http://localhost:3000.
- Student Accounts:
student1~student10/1234 - Administrator Accounts:
admin1~admin10/admin123
.
βββ .github/ # GitHub configuration
β βββ ISSUE_TEMPLATE/ # Issue templates
β β βββ bug_report.md
β β βββ feature_request.md
β βββ workflows/ # GitHub Actions workflows
β βββ pages.yml # GitHub Pages deployment
β
βββ app/ # Application source code
β βββ server.js # Express server main file
β βββ db.js # PostgreSQL/SQLite database module
β βββ unilost.html # Frontend HTML file (main application)
β βββ unilost.db # SQLite database file (local development)
β βββ utils/ # Utility modules
β βββ errorHandler.js # Error handling utilities
β
βββ assets/ # Project assets (images, etc.)
β
βββ scripts/ # Utility scripts
β βββ add-dummy-data.js # Add sample data to database
β βββ update-user-names.js # Update user names
β βββ update-item-locations.js # Update item locations
β βββ utils/ # Utility scripts
β βββ check-critical-functions.sh
β
βββ docs/ # Documentation (Sphinx)
β βββ source/ # Sphinx source files (.rst)
β βββ build/ # Sphinx build output (gitignored)
β βββ Makefile # Sphinx build commands (Unix)
β βββ make.bat # Sphinx build commands (Windows)
β βββ requirements.txt # Python dependencies for Sphinx
β
βββ website/ # Jekyll Website (GitHub Pages)
β βββ _config.yml # Jekyll configuration
β βββ Gemfile # Ruby dependencies for Jekyll
β βββ index.md # Homepage
β βββ features.md # Features page
β βββ community.md # Community page
β βββ contact.md # Contact page
β βββ _layouts/ # Jekyll layouts
β β βββ default.html
β βββ _includes/ # Jekyll includes
β β βββ header.html
β β βββ footer.html
β βββ assets/ # CSS and JavaScript assets
β βββ css/
β β βββ main.css
β βββ js/
β βββ main.js
β
βββ guidelines/ # Project guidelines and documentation
β βββ APACHE_LICENSE_COMPLIANCE.md
β βββ CHECKLIST.md
β βββ COMPATIBILITY.md
β βββ DATABASE_SETUP.md
β βββ DEPLOY.md
β βββ PROJECT_STRUCTURE.md
β βββ UniLost_Deliverable.docx
β
βββ server.js # Entry point (runs app/server.js)
βββ package.json # Node.js dependencies
βββ package-lock.json # NPM lock file
βββ render.yaml # Render deployment configuration
βββ _config.yml # Jekyll configuration (root, for reference)
βββ .readthedocs.yaml # Read the Docs configuration
βββ .gitignore # Git ignore rules
βββ LICENSE # Apache License 2.0
βββ README.md # Project documentation
βββ SECURITY.md # Security policy
βββ CODE_OF_CONDUCT.md # Code of conduct
βββ CONTRIBUTING.md # Contribution guidelines
GET /api/me- Currently logged in user informationPOST /api/login- LoginPOST /api/logout- Logout
GET /api/items- Retrieve all items (query:?status=pending|approved)GET /api/items/:id- Retrieve a specific itemPOST /api/items- Register an item (login required)PATCH /api/items/:id- Edit an item (admin only)DELETE /api/items/:id- Delete an item (admin only)
chat:join- Join a global chatchat:send- Send a global chat messagethread:join- Join a thread for each itemthread:send- Send a thread message
- users: User information
- items: Lost and Found items
- chat_messages: Global chat messages
- thread_messages: Threaded messages for each item
Current Deployment Status: β https://unilost.onrender.com
For deployment instructions, see the Deployment Guide in the documentation.
- Upload your code to GitHub
- Select "New Web Service" in Render
- Connect your GitHub repository
- Automatic deployment complete!
- URL: https://unilost.onrender.com
- Hosting: Render (Free Plan)
- Database: PostgreSQL (if DATABASE_URL is set) or SQLite (default)
PORT: Server port (default: 3000)SESSION_SECRET: Session secret key (required for production environments)DATABASE_URL: PostgreSQL connection string (required for deployment)- Example:
postgresql://user:password@host:5432/database - If not available, use SQLite for local development.
- Google Groups: Join our mailing list or email unilost@googlegroups.com
- GitHub Discussions: Join discussions
- GitHub Issues: Report issues
- Project Website: Visit our website
- Documentation: Read the docs
Apache License 2.0
For details, refer to the LICENSE file.
Sejong University Open Source Software Introduction Project