freesched/README.md

92 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

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)