FAQ
Frequently Asked Questions about UniLost.
General Questions
What is UniLost?
UniLost is an integrated lost and found management system designed for Sejong University. It provides map-based item registration, real-time chat, and administrative tools for managing lost and found items.
Who can use UniLost?
Students: Can register lost items, search for found items, and communicate with other users
Administrators: Can approve/reject item registrations, manage storage locations, and oversee the system
Is UniLost free to use?
Yes, UniLost is open source and free to use. It is licensed under the Apache License 2.0.
Installation Questions
What are the system requirements?
Server: * Node.js 18.0.0 or later (Node.js 20 LTS recommended) * npm 9.0.0 or later * PostgreSQL (for production) or SQLite (for development)
Client: * Modern web browsers (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+)
Do I need to install PostgreSQL?
No, PostgreSQL is optional. UniLost uses SQLite by default for local development. PostgreSQL is recommended for production deployment.
How do I set up the database?
For SQLite: No setup required. The database file (unilost.db) will be created automatically.
For PostgreSQL: Set the DATABASE_URL environment variable. See Configuration Guide for details.
Usage Questions
How do I log in?
Use the default accounts:
* Student Accounts: student1 ~ student10 / 1234
* Administrator Accounts: admin1 ~ admin10 / admin123
How do I register a lost item?
Log in with your student account
Click “Register Lost Item”
Fill in item details
Click on the map to set the location
Click “Register”
How do I search for items?
Browse items on the map
Use the category filter to narrow down results
Click on item markers to see details
Use the item thread to communicate about the item
How do I approve items as an administrator?
Log in with your administrator account
View pending items
Review item details
Set storage location
Click “Approve” or “Reject”
Technical Questions
What database does UniLost use?
UniLost supports both: * SQLite: Default for local development * PostgreSQL: Recommended for production
The database is selected automatically based on the DATABASE_URL environment variable.
How does real-time chat work?
UniLost uses Socket.IO for real-time communication. Messages are sent via WebSocket connections and stored in the database.
Can I customize the map bounds?
Yes, map bounds are configured in unilost.html. By default, the map is restricted to South Korea. See Configuration Guide for details.
How do I change the default port?
Set the PORT environment variable:
export PORT=8080
node server.js
Deployment Questions
Can I deploy UniLost on Render?
Yes, UniLost is designed to work with Render. See Getting Started for deployment instructions.
Does Render support SQLite?
Render’s free plan has an ephemeral file system, so SQLite files are lost on restart. For production, use PostgreSQL.
How do I set up PostgreSQL on Render?
Create a PostgreSQL database in Render dashboard
Link it to your web service
The
DATABASE_URLwill be set automatically
Can I use other hosting services?
Yes, UniLost can be deployed on any Node.js hosting service that supports: * Node.js 18+ * PostgreSQL or SQLite * WebSocket connections (for Socket.IO)
Security Questions
How are passwords stored?
Passwords are hashed using bcrypt before storage. Plain text passwords are never stored in the database.
Is the session secure?
Yes, sessions use: * HttpOnly cookies (prevents JavaScript access) * SameSite protection (CSRF protection) * Secure cookies in production (HTTPS only)
How do I change the session secret?
Set the SESSION_SECRET environment variable:
export SESSION_SECRET="your-random-secret-key"
Troubleshooting Questions
The server won’t start. What should I do?
Check if the port is already in use
Verify all dependencies are installed (
npm install)Check for error messages in the console
Verify environment variables are set correctly
I can’t connect to the database. What’s wrong?
Verify
DATABASE_URLis set correctly (for PostgreSQL)Check if the database server is running
Verify network connectivity
Check database credentials
The map isn’t loading. Why?
Check your internet connection (map tiles are loaded from OpenStreetMap)
Check browser console for JavaScript errors
Verify Leaflet.js is loaded correctly
Chat messages aren’t working. What’s the issue?
Check if Socket.IO server is running
Verify WebSocket connections are allowed
Check browser console for connection errors
Verify CORS is configured correctly
Contributing Questions
How can I contribute?
See Contribution Guidelines for detailed information on contributing to UniLost.
Do I need to sign a CLA?
No, by contributing to UniLost, you agree that your contributions will be licensed under the Apache License 2.0.
License Questions
What license does UniLost use?
UniLost is licensed under the Apache License 2.0. See the LICENSE file for details.
Can I use UniLost in my own project?
Yes, you can use UniLost in your own project as long as you comply with the Apache License 2.0 terms.
Still Have Questions?
If you have questions not covered in this FAQ:
Check the documentation: Getting Started, How to Use, Technical Overview
Review existing GitHub issues
Create a new GitHub issue with your question
Join our Google Groups: unilost@googlegroups.com or visit https://groups.google.com/g/unilost
Join GitHub Discussions: https://github.com/jin040907/UniLost/discussions