2025-02-28 20:18:01 +00:00
|
|
|
# FreeSched
|
|
|
|
|
|
|
|
A lightweight, open-source scheduling tool for managing appointments with a clean, intuitive interface.
|
|
|
|
|
|
|
|
## Features
|
|
|
|
|
|
|
|
- **Simple Scheduling**: Create unique scheduling identifiers (UIDs) for different meeting types
|
|
|
|
- **Visual Calendar Interface**: Easy-to-use calendar for both admin and users
|
|
|
|
- **Time Slot Management**: Flexibly define available time slots on specific dates
|
|
|
|
- **Booking System**: Let others book available time slots with name, email, and notes
|
|
|
|
- **Admin Dashboard**: Manage UIDs and availability all in one place
|
|
|
|
- **Local Database**: SQLite-based storage for simplicity and portability
|
|
|
|
|
|
|
|
## Live Demo
|
|
|
|
|
|
|
|
Access the main scheduling page: [http://localhost:3000/](http://localhost:3000/)
|
|
|
|
Access the admin interface: [http://localhost:3000/admin](http://localhost:3000/admin)
|
|
|
|
|
|
|
|
## Quick Start
|
|
|
|
|
|
|
|
### Prerequisites
|
|
|
|
|
|
|
|
- Node.js (version 12 or higher)
|
|
|
|
- npm
|
|
|
|
|
|
|
|
### Installation
|
|
|
|
|
|
|
|
1. Clone the repository
|
|
|
|
```bash
|
|
|
|
git clone https://github.com/moeny/freesched.git
|
|
|
|
cd freesched
|
|
|
|
```
|
|
|
|
|
|
|
|
2. Install dependencies
|
|
|
|
```bash
|
|
|
|
npm install
|
|
|
|
```
|
|
|
|
|
|
|
|
3. Start the server
|
|
|
|
```bash
|
|
|
|
npm start
|
|
|
|
```
|
|
|
|
|
|
|
|
4. Access the application
|
|
|
|
- Admin interface: [http://localhost:3000/admin](http://localhost:3000/admin)
|
|
|
|
- Create a UID in the admin interface
|
|
|
|
- Access your scheduling page at: http://localhost:3000/YOUR-UID
|
|
|
|
|
|
|
|
## Usage Guide
|
|
|
|
|
|
|
|
### Admin Interface
|
|
|
|
|
|
|
|
1. **Create a UID**: Click "Create" button and enter a unique identifier
|
|
|
|
2. **Manage Availability**:
|
|
|
|
- Select a UID from the dropdown
|
|
|
|
- Navigate through the calendar to select dates
|
|
|
|
- Add and manage time slots for each date
|
|
|
|
3. **Clear Availability**: Reset all availability for a specific UID
|
|
|
|
4. **Delete UID**: Remove a UID and all its associated availability data
|
|
|
|
|
|
|
|
### User Scheduling Interface
|
|
|
|
|
|
|
|
1. Users visit your unique scheduling link
|
|
|
|
2. They select an available date from the calendar
|
|
|
|
3. They choose an available time slot
|
|
|
|
4. They enter their contact information to confirm the booking
|
|
|
|
|
|
|
|
## Development
|
|
|
|
|
|
|
|
The project structure is organized as follows:
|
|
|
|
|
|
|
|
- `server.js` - Express server and API endpoints
|
|
|
|
- `db/` - SQLite database and initialization
|
|
|
|
- `views/` - HTML templates for admin and public interfaces
|
|
|
|
- `public/` - JavaScript, CSS, and static assets
|
|
|
|
- `timepicker-modal/` - Custom timepicker component
|
|
|
|
|
|
|
|
## Technologies Used
|
|
|
|
|
|
|
|
- **Backend**: Node.js with Express
|
|
|
|
- **Database**: SQLite3
|
|
|
|
- **Frontend**: HTML, CSS, JavaScript
|
|
|
|
- **UI Framework**: Bootstrap 5
|
|
|
|
- **Icons**: Bootstrap Icons
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
ISC
|
|
|
|
|
|
|
|
## GitHub Repository
|
|
|
|
|
|
|
|
[https://github.com/moeny/freesched](https://github.com/moeny/freesched)
|