Giter Site home page Giter Site logo

alextselegidis / easyappointments Goto Github PK

View Code? Open in Web Editor NEW
3.1K 155.0 1.2K 34.85 MB

:date: Easy!Appointments - Self Hosted Appointment Scheduler

Home Page: https://easyappointments.org

License: GNU General Public License v3.0

PHP 85.84% HTML 0.22% CSS 0.93% JavaScript 12.83% Dockerfile 0.01% SCSS 0.18%
appointments scheduler events time google-calendar sync php javascript mysql web

easyappointments's Introduction


Easy!Appointments
Easy!Appointments


A powerful Open Source Appointment Scheduler that can be installed on your server.

GitHub GitHub release (latest by date) GitHub All Releases Chat On Discord

AboutFeaturesSetupInstallationLicense

screenshot

About

Easy!Appointments is a highly customizable web application that allows customers to book appointments with you via a sophisticated web interface. Moreover, it provides the ability to sync your data with Google Calendar so you can use them with other services. It is an open source project that you can download and install even for commercial use. Easy!Appointments will run smoothly with your existing website as it can be installed in a single folder of the server and of course share an existing database.

Features

The application is designed to be flexible enough so that it can handle any enterprise work flow.

  • Customers and appointments management.
  • Services and providers organization.
  • Working plan and booking rules.
  • Google Calendar synchronization.
  • Email notifications system.
  • Self hosted installation.
  • Translated user interface.
  • User community support.

Setup

To clone and run this application, you'll need Git, Node.js (which comes with npm) and Composer installed on your computer. From your command line:

# Clone this repository
$ git clone https://github.com/alextselegidis/easyappointments.git

# Go into the repository
$ cd easyappointments

# Install dependencies
$ npm install && composer install

# Start the file watcher
$ npm start

Note: If you're using Linux Bash for Windows, see this guide or use node from the command prompt.

You can build the files by running npm run build. This command will bundle everything to a build directory.

Installation

You will need to perform the following steps to install the application on your server:

  • Make sure that your server has Apache/Nginx, PHP and MySQL installed.
  • Create a new database (or use an existing one).
  • Copy the "easyappointments" source folder on your server.
  • Make sure that the "storage" directory is writable.
  • Rename the "config-sample.php" file to "config.php" and update its contents based on your environment.
  • Open the browser on the Easy!Appointments URL and follow the installation guide.

That's it! You can now use Easy!Appointments at your will.

You will find the latest release at easyappointments.org. If you have problems installing or configuring the application visit the official support group. You can also report problems on the issues page and help the development progress.

License

Code Licensed Under GPL v3.0 | Content Under CC BY 3.0


Website alextselegidis.com  ·  GitHub alextselegidis  ·  Twitter @alextselegidis

More Projects On Github

easyappointments's People

Contributors

alextselegidis avatar bzg avatar caine85 avatar cbka avatar chrispichardo avatar cuchi avatar dependabot[bot] avatar edioilha avatar emanwebdev avatar giladx avatar h3ct0r avatar icecoldfire avatar idstam avatar janinavelasco9 avatar joonakannisto avatar mokkin avatar oxteam avatar p0zi avatar petrtodorov avatar popod avatar salvatorecordiano avatar scottatron avatar sduck avatar sh-dv avatar thijslemmens avatar valian avatar vitormattos avatar walalm avatar wolfygit avatar yrammos avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easyappointments's Issues

Remove Times

Is it possible to remove times that have passed. For example , its its 2pm , any times before 2pm dont show on the page.

Fix E!A installation problems with AJAX requests.

A lot of users have reported that the AJAX installer does not work due to mod_rewrite problems. The updated version of the installer will not use mod_rewrite for the requests.

  • This issue needs to be tested by various users during the BETA version.

Backend settings.php issue

In v1.1.0 there is a typo in the code where thursday should be, it is tuesday. This was causing thursday to no be recognized in the backend business logic.
Thanks

                                   <div class="checkbox">
                                        <label>
                                            <input type="checkbox" id="tuesday" />
                                                <?php echo $this->lang->line('tuesday'); ?>
                                        </label>
                                    </div>
                                </td>
                                <td><input type="text" id="thursday-start" class="work-start" /></td>
                                <td><input type="text" id="thursday-end" class="work-end" /></td>

Emails Not Being Sent

I have setup easyappointments , but when an appointment is booked , an email isnt sent to the customer to tell them of their appointment

Raising more useful exceptions and enable error logging by default.

In application/controllers/google.php the exceptions raised in function sync cause a JSON parse error. I believe this is why some people report an endlessly spinning circle when trying to get Google sync working.

This can be fixed by including a call to getMessage().

The code is currently at lines 203-207 (https://github.com/alextselegidis/easyappointments/blob/master/src/application/controllers/google.php#L205) and should be changed to this (only line 205 is changed, the rest is for context):

catch(Exception $exc) {
        echo json_encode(array(
            'exceptions' => array($exc->getMessage())
        ))  ;
        }

Login dashboard for customers.

Please create a login dashboard for clients where they could see their previously booked appointments

Create a login panel for clients

Date picker mobile

Iv added bootstrap to the backend to make it a bit more responsive on mobiles. On the calendar page with the modal add appointment , the date/ time picker slider doesn't work on mobiles.

Is there any way to use the same date / time picker as the front end?

Feature Request : Appointments statuses

Related to #58.
After the scheduled time passed, if the customer did not came, would be great to have appointmets statuses, so the admin can change the status of thos appointments : As Scheduled; Not Arrived etc..

Duration is not changing when adding a new appointment

In the calendar when addning a new appointment the time for the "Start Date / Time" and "End Date / Time" are automatically set for the first service but when selecting a new service the "Start Date / Time" and "End Date / Time" is not adjusted to the selected service time (you now have to set that manually, which is easy to forget and might cause problems).

Hope you understand what I mean.

Error on setup: Cannot redeclare class SystemConfiguration

I get the following error after following all installation steps:
Fatal error: Cannot redeclare class SystemConfiguration in /Applications/XAMPP/xamppfiles/htdocs/easyappointments/configuration.php on line 3

I tried commenting out the class definition and setting each static variable manually (in configuration.php), like so:
SystemConfiguration::$base_url = 'localhost/easyappointments/';

This time I get an error message telling me that the class doesn't exist. What can I do?

Security vulnerabilities

I have emailed information about security vulnerabilities to project developer's (Alex Tselegidis) email 2015-04-03 without reply. Did you receive the email?

Fix displaying issues on the Frontend

Strangely, with a too long description for a service, I ended-up with some positionning problems (text behind the bottom part of the frontend).

I found at that the .frame-container had a fixed height.
I simply commented the height definition line to solve the problem.

book-appointment-wizard .wizard-frame .frame-container {

/*height: 370px;*/
margin-bottom: 10px;

}

Then we want also to let the footer stay on the bottom part. A simple clear:both; solves the issue.

book-appointment-wizard #frame-footer {

clear:both;
padding: 10px;
text-align: center;
border-top: 1px solid #EEE;
background: #FAFAFA;

}

Hoping it can help someone else ;)
Have a good day,
Rhub

Too many required fields

Before anything great application just a few things to consider.

To make things easier on the installation process, do not request or require so much information.
Last Names and Phone numbers in certain sections should be required but not in all specially in the installation process. Let the company or person fill out that information once they get into the system.

Same thing for adding users, last names and phone numbers should not be required the email is more than enough.

It is a great way to keep things organize but most of the personal information should be optional.

So far things look good I have stumble upon some issues but I still have to see if they are related to my share server.

Again great application.

Question: Add new menu item for quick booking page access.

It would be nice if backend users could quickly navigate to frontend booking wizard but without editing the browser's URL address, just by pressing a menu item at the backend menu bar. What do you think?

(Will only be included if users find it usefull)

How to add available time slots

HI,

If I add my google calendar, I would want to to have the already created event times to disappear or appear as booked.
Currently, it does a overlap of event. If I have a 12.00 Noon meeting already setup in my google calendar than on the appointments page it should not list 12 noon to 1.00 pm slot.

If you could tell how to achieve it.

Siddharth

PHP warnings during E!A installation (BETA v1.1)

Many share hosts have "allow_url_fopen" off for security reasons, and on your installation and I am not sure in how many other places you're using file_get_contents() function which should be tested if is disable on the system and try using other functions or libraries like Curl. Or at least make sure that before installing all the functions that are not part of a standard php installation are pre tested to see if they are enable in the system if not to give a warning about whats disable to the person so hey can see what they can do. In my case all I had to do was to turn on allow_url_fopen.

Also there seems to be some database request prior to setting up the database that causing problems on the initial install. Here is a small log file from the main CI system,

Query error: Table 'ea_user_settings' doesn't exist

Severity: Warning --> mysql_num_rows() expects parameter 1 to be resource, boolean given /system/database/drivers/mysql/mysql_result.php line 37

The above 2 errors I think they are related since the table doesn't exist,
The mysql error repeats it self 23 times, so I am guessing its the creation of the database or loading of information to the database.

Severity: Notice --> Undefined variable: has_category /application/views/backend/calendar.php 129

This last error is also part of the installation which the variable should be set as FALSE from the beginning and be available in the scope of the view. if not it should be tested with isset() to see if the variable exist and if its equal to true else the warning from php will pop up as the variable doesnt exist.

if (isset($has_category) && $has_category)

List of Appointments for the Day

Is it possible to have json API or query to get List of Appointments for the Day for particular Provider.
I want to create simple mobile app to display today's booked appointments on mobile for providers.

Provide dedicated URL for separate provider/service bookings.

Provide a systems by which we don't have to select a service and a service provider instead we can have a URL of the service page of a provider where the user can directly book an appointment with only that service provider

By using this method we can make a profile page of a service provider on our website and then put a button which would be linked to the service page of the service provider in order to book an appointment

Whereas the current selection process can be used to book appointments with all service providers as well

Add secure flag to CI_SESSION when HTTPS is enabled.

Please implement functionality to automatically add Secure flag to ci_session session cookie when HTTPS is used to harden installations, thank you. If you need any more information please contact me.

https://www.owasp.org/index.php/SecureFlag
https://en.wikipedia.org/wiki/HTTP_cookie#Secure_cookie

A secure cookie can only be transmitted over an encrypted connection (i.e. HTTPS). This makes the cookie less likely to be exposed to cookie theft via eavesdropping.

How to sync calendar events periodically

HI,

I noticed that if a calendar event is being created directly, the event slot does not reflect automatically in the backend calendar view. It only appears after I press synchronize. and then only the unavailable slots appear in the appointment. Is there a way that appointment slots appear directly from google so to get updated result

Siddharth

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.