Add CONTRIBUTE and update README

This commit is contained in:
Doug Masiero 2025-02-28 15:18:01 -05:00
parent d5c5f2838f
commit 5f019c7ed4
3 changed files with 182 additions and 78 deletions

107
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,107 @@
# Contributing to FreeSched
Thank you for your interest in contributing to FreeSched! This document provides guidelines and instructions for contributing to this open-source scheduling tool.
## Code of Conduct
Please be respectful and considerate of others when contributing to this project. We aim to foster an inclusive and welcoming community.
## How to Contribute
### Reporting Bugs
If you find a bug in the application:
1. Check if the bug has already been reported in the Issues section
2. If not, create a new issue with a clear title and description
3. Include steps to reproduce the bug
4. Add information about your environment (OS, Node.js version, etc.)
5. If possible, include screenshots or error logs
### Suggesting Features
Have an idea for a new feature?
1. Check if the feature has already been suggested in the Issues section
2. If not, create a new issue with the tag "enhancement"
3. Provide a clear description of the feature and how it would benefit the project
4. If possible, include mockups or examples
### Pull Requests
We welcome contributions via pull requests:
1. Fork the repository
2. Create a new branch for your feature or bugfix (`git checkout -b feature/your-feature-name`)
3. Make your changes
4. Test your changes thoroughly
5. Commit your changes (`git commit -am 'Add some feature'`)
6. Push to the branch (`git push origin feature/your-feature-name`)
7. Create a new Pull Request
### Pull Request Guidelines
- Keep your changes focused on a single issue or feature
- Follow the existing code style and formatting
- Include tests if applicable
- Update documentation as needed
- Make sure all tests pass before submitting
- Provide a clear description of the changes in your PR
## Development Setup
Follow these steps to set up the project for development:
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
```
## Project Structure
- `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
## Coding Standards
- Use consistent indentation (2 spaces)
- Follow JavaScript best practices
- Comment your code when necessary
- Keep functions small and focused
- Use meaningful variable and function names
## Testing
Currently, the project does not have automated tests. Manual testing is required before submitting PRs:
1. Test both admin and user interfaces
2. Verify that time slots can be created and booked correctly
3. Test edge cases (invalid inputs, concurrent bookings, etc.)
## Documentation
If you make changes that affect how users interact with the application, please update the README.md accordingly.
## License
By contributing to FreeSched, you agree that your contributions will be licensed under the project's ISC license.
## Questions?
If you have any questions about contributing, feel free to open an issue for discussion.
Thank you for helping improve FreeSched!

153
README.md
View File

@ -1,95 +1,92 @@
# Quick Start # FreeSched
`npm install` A lightweight, open-source scheduling tool for managing appointments with a clean, intuitive interface.
`node server.js` ## Features
Browse to http://localhost:3000/admin for admin interface. - **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
Create a UID and follow link in admin interface for frontend. ## Live Demo
# Introducing FreeSched: A Simpler Alternative to Cal.com Access the main scheduling page: [http://localhost:3000/](http://localhost:3000/)
Youve asked for a much simpler, easy-to-use version of Cal.com, named "FreeSched," that retains the clean and intuitive UI/UX of Cal.com and mirrors the simplicity of Calendly.com. Below, Ill outline what FreeSched is, its core features, how it works, and why its a streamlined alternative to Cal.com—all while keeping the design aesthetic you love. Access the admin interface: [http://localhost:3000/admin](http://localhost:3000/admin)
What is FreeSched? ## Quick Start
FreeSched is a lightweight, open-source scheduling tool designed to make booking meetings as simple as possible. Inspired by Cal.com (an open-source scheduling infrastructure) and Calendly.com (a popular scheduling platform), FreeSched strips away complexity to focus on the essentials. Its perfect for individuals—like freelancers, consultants, or anyone needing quick one-on-one scheduling—while maintaining a modern, minimalistic interface similar to Cal.com and Calendly.
Key Features of FreeSched ### Prerequisites
FreeSched focuses on simplicity without sacrificing usability. Heres what it offers:
Single Event Type - Node.js (version 12 or higher)
Users set one type of event with a fixed duration (e.g., 30 minutes). - npm
No need to juggle multiple event types—just one straightforward option.
Basic Availability Settings
Set your available days and hours using a simple weekly grid (e.g., Monday to Friday, 9 AM to 5 PM).
Availability is divided into 30-minute slots for easy selection.
Google Calendar Integration
Connects to your Google Calendar to check existing events and prevent double-booking.
Only shows time slots when youre truly free.
Simple Booking Page
A clean, public page (e.g., freesched.example.com/yourname) where others can pick a date and time.
Invitees provide their name and email to confirm the booking.
Email Notifications
Sends confirmation emails to you and the invitee with all the details.
Keeps everyone in the loop without extra effort.
Time Zone Support
Automatically adjusts available times to the invitees time zone.
No more confusion for international scheduling.
How FreeSched Works
FreeSched is designed to be intuitive for both the user (you) and the invitee (the person booking with you). Heres the process:
For You (The User): ### Installation
Sign Up and Set Up
Log in with Google (which also links your Google Calendar).
Set your availability (e.g., weekdays from 9 AM to 5 PM) and event duration (e.g., 30 minutes).
Share Your Booking Link
Get a unique URL (e.g., freesched.example.com/yourname) to share via email, social media, or anywhere.
Manage Bookings
View upcoming bookings in a simple dashboard.
Cancel bookings if needed, with automatic notifications sent to both parties.
For Invitees (The Booker):
Visit Your Booking Page
They open your link and see a calendar with your available dates.
Pick a Time
They select a date and choose from your available 30-minute slots, adjusted to their time zone.
Confirm the Booking
They enter their name and email, hit confirm, and receive an email with the details.
Once booked, the event is added to your Google Calendar, and both of you get a confirmation email. Thats it—no fuss, no extra steps.
UI/UX: Inspired by Cal.com and Calendly 1. Clone the repository
FreeSched keeps the polished, user-friendly design of Cal.com and Calendly: ```bash
git clone https://github.com/moeny/freesched.git
cd freesched
```
Clean Layout: A minimalistic interface with plenty of whitespace, clear fonts, and a simple color scheme. 2. Install dependencies
Intuitive Navigation: Easy-to-use calendar for picking dates and a straightforward list of time slots. ```bash
Responsive Design: Works seamlessly on desktops, tablets, and phones. npm install
Booking Flow: Select a date → pick a time → enter details → confirm—all in a few clicks. ```
Think of Calendlys booking page or Cal.coms sleek dashboard, but pared down to the essentials. The focus is on clarity and ease, avoiding overwhelming options or cluttered screens.
How Its Simpler Than Cal.com 3. Start the server
Cal.com is a powerful scheduling infrastructure with tons of features, but that can make it overkill for simple needs. FreeSched simplifies things: ```bash
npm start
```
Feature Cal.com FreeSched 4. Access the application
Event Types Multiple (15-min, 30-min, etc.) One fixed duration (e.g., 30 min) - Admin interface: [http://localhost:3000/admin](http://localhost:3000/admin)
Availability Detailed rules and buffers Basic weekly grid - Create a UID in the admin interface
Integrations Multiple calendars, payments, etc. Google Calendar only - Access your scheduling page at: http://localhost:3000/YOUR-UID
Team Support Yes (shared schedules, etc.) Individual use only
Customization Highly customizable Simple, uniform design
FreeSched cuts out the extras to deliver a tool thats fast to set up and easy to use, while still looking and feeling like its more complex cousins.
Technical Overview (For the Curious) ## Usage Guide
FreeSched is built with modern, open-source tools:
Frontend: Next.js (a React framework for fast, server-rendered pages). ### Admin Interface
Backend: Node.js with Express.js for handling bookings and logic.
Database: PostgreSQL with Prisma to store user data and bookings.
Authentication: NextAuth.js with Google OAuth for login and calendar access.
Emails: SendGrid or Nodemailer for notifications.
This keeps FreeSched lightweight, secure, and easy to maintain, with a tech stack similar to Cal.com but scaled back for simplicity.
Why Use FreeSched? 1. **Create a UID**: Click "Create" button and enter a unique identifier
FreeSched is for anyone who wants a free, no-nonsense scheduling tool: 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
Perfect For: Freelancers, tutors, consultants, or anyone needing simple one-on-one bookings. ### User Scheduling Interface
Benefits: Quick setup, no learning curve, and a professional look inspired by Cal.com and Calendly.
Open-Source: Like Cal.com, its free to use and customizable if youre a developer. 1. Users visit your unique scheduling link
Its scheduling made easy—just share a link and let others book you, all wrapped in a familiar, user-friendly package. 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)

Binary file not shown.