Add CONTRIBUTE and update README
This commit is contained in:
parent
d5c5f2838f
commit
5f019c7ed4
107
CONTRIBUTING.md
Normal file
107
CONTRIBUTING.md
Normal 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
153
README.md
@ -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/)
|
||||||
You’ve 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, I’ll outline what FreeSched is, its core features, how it works, and why it’s 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. It’s 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. Here’s 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 you’re 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 invitee’s 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). Here’s 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. That’s 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 Calendly’s booking page or Cal.com’s sleek dashboard, but pared down to the essentials. The focus is on clarity and ease, avoiding overwhelming options or cluttered screens.
|
|
||||||
|
|
||||||
How It’s 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 that’s 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, it’s free to use and customizable if you’re a developer.
|
1. Users visit your unique scheduling link
|
||||||
It’s 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)
|
BIN
db/freesched.db
BIN
db/freesched.db
Binary file not shown.
Loading…
Reference in New Issue
Block a user