Code Monkey home page Code Monkey logo

timegrid's Introduction

timegrid.io

timegrid (Archived)

Build Status Code Climate Test Coverage Gitter License No Maintenance Intended

Timegrid helps contractors and customers to find the perfect meeting time through online appointments.

Timegrid Backoffice Dashboard Screenshot

Features

  • Built with Laravel 5.3 framework for PHP
  • Classic and oAuth2 Sign-in/Sign-up with Socialite
  • Business management
    • Clients Addressbook
    • Services
    • Staff
    • Availability
    • Appointments
  • Calendar sharing through iCalendar link
  • Scheduling view with fullcalendar
  • Self-service reservation with datepicker
  • Basic email notifications
  • i18n Support
  • Multiple Timezones Support
  • Live chat with TidioChat
  • Admin GUI with AdminLTE Twitter Bootstrap 3 based theme.

Future features here

Documentation

Read the wiki

Installing

Read the INSTALLING section.

Get started in 10 min with a Docker image for development environment.

Localization

Current supported user interface languages are:

  • American English (en_US)
  • Spanish (es_ES and es_AR)
  • Italian (it_IT)
  • French (fr_FR)
  • Russian (ru_RU)
  • Armenian (am_HY)

Feel free to contribute with your preferred translation!

Appointment Library

Timegrid uses Concierge package for dealing with appointments.

Timegrid Mindmap

Author

Timegrid is developed and maintained by Ariel Vallese.

Contributing

Contributions are welcome. Please read the following notes.

Special Thanks & Credits

License

Timegrid is open-sourced software licensed under the AGPL

May all beings be happy.

timegrid's People

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

timegrid's Issues

Add microdata/json-ld to reservation notification emails

Add microdata or json-ld to reservation notification emails.

This would allow users to easily import the event to their Google Calendar.

Example

<div itemscope itemtype="http://schema.org/EventReservation">
  <meta itemprop="reservationNumber" content="E123456789"/>
  <link itemprop="reservationStatus" href="http://schema.org/Confirmed"/>
  <div itemprop="underName" itemscope itemtype="http://schema.org/Person">
    <meta itemprop="name" content="John Smith"/>
  </div>
  <div itemprop="reservationFor" itemscope itemtype="http://schema.org/Event">
    <meta itemprop="name" content="Foo Fighters Concert"/>
    <meta itemprop="startDate" content="2017-03-06T19:30:00-08:00"/>
    <div itemprop="location" itemscope itemtype="http://schema.org/Place">
      <meta itemprop="name" content="AT&T Park"/>
      <div itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
        <meta itemprop="streetAddress" content="24 Willie Mays Plaza"/>
        <meta itemprop="addressLocality" content="San Francisco"/>
        <meta itemprop="addressRegion" content="CA"/>
        <meta itemprop="postalCode" content="94107"/>
        <meta itemprop="addressCountry" content="US"/>
      </div>
    </div>
  </div>
</div>

As reference, JSON-LD seems to be a cool and simple package to use, but it lacks some structure items for Event.

Enhace empty state screens

Enhance empty states (Examples)

Target Screens

  • Business Manager
    • No business registered
    • No contacts registered in addressbook
    • No appointments registered
    • No services registered
    • No vacancies published
    • No search results
  • User
    • No active appointments

A good approach is to provide for each one:

  • A title
  • A suggestion paragraph
  • An action button
  • A nice image

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Add guest user reservations feature (soft appointments)

Soft Appointments

Many users just don't want to get registered to a website for making a reservation, at least for the first time.

This feature would allow those to make a reservation and confirm it through an email link (or other valid channel).

  • Unconfirmed appointments should be cleared-up to free space (schedule vacancies) after certain time window.
  • The feature should be available for businesses willing to accept this type of reservations.

Refactor booking logic

A full refactor of booking logic should be done

Despite booking is currently working fine, it does not adopt a clean design and either uses design patterns which will simplify lot of code.

The branch refactor-booking is intended to redesign the full logic by adding Service Layers and booking strategies.

Some help and brainstorming is welcome on this phase

Enhance businesses directory (listing) layout

/user/businesses/list

Listing is just ugly and deserves an improvement.

  • Should contain main business info
    • Name, category, location, picture if available
  • Should be ready to be listed in small screen devices

Attempting to set vacancies error

Caused by not having services registered.
manager.businesses.vacancies.edit shows page without fields to edit vacancies, only list of dates.
Submitting returns error due to attempting to iterate an empty array.

Setup codeclimate.com test coverage

  1. Add Code Climate's php-test-reporter to your composer.json
  2. Install it using composer
  3. Generate coverage data
  4. Send the coverage data to Code Climate

Depends on #1

AJAX action for appointment is not working from manager

From manager view /manager/business/XX/contact/YY the confirm and annulate buttons are not working.

This is because the JS is not included into this view (should be ported as a common snippet)

Example for annulate button

screenshot from 2015-11-21 22 38 54

Exception On Business Registration

When visiting

/manager/business/create
InvalidArgumentException in Reader.php line 46:
The file "/home/overthinkingme/Applications/timegrid/storage/app/geoip.mmdb" does not exist or is not readable.

Controller: Manager/BusinessController
Line 50:

$location = GeoIP::getLocation();

Not sure how you plan to implement it, just thought I'd submit the bug to document it.

Integration Tests: Add import DatabaseTransactions to IntegrationTests

Add Illuminate\Foundation\Testing\DatabaseTransactions import to UserRegistrationProcessTest

Currently the tests are failing with this import, so it got removed (9a9d9af), but needs to be added back and get it working.

Dump of error:

alariva@trinsic ~/timegrid.io/app $ phpunit tests/integration/
PHPUnit 4.8.18 by Sebastian Bergmann and contributors.

EE

Time: 14.47 seconds, Memory: 8.25Mb

There were 2 errors:

1) UserRegistrationProcessTest::testRegistrationSuccess
InvalidArgumentException: Couldn't find an element, 'John', with a name or class attribute of 'name'.

/home/alariva/timegrid.io/app/vendor/laracasts/integrated/src/Extensions/Selenium.php:136
/home/alariva/timegrid.io/app/vendor/laracasts/integrated/src/Extensions/Selenium.php:205
/home/alariva/timegrid.io/app/tests/integration/UserRegistrationProcessTest.php:17

2) UserRegistrationProcessTest::testRegistrationPasswordMissmatch
InvalidArgumentException: Couldn't find an element, 'John', with a name or class attribute of 'name'.

/home/alariva/timegrid.io/app/vendor/laracasts/integrated/src/Extensions/Selenium.php:136
/home/alariva/timegrid.io/app/vendor/laracasts/integrated/src/Extensions/Selenium.php:205
/home/alariva/timegrid.io/app/tests/integration/UserRegistrationProcessTest.php:30

FAILURES!
Tests: 2, Assertions: 0, Errors: 2.

Implement slug duplication check before form submit

The business slug allows to address a home page for the business profile:

example.com/the-business-slug

Upon business registration, an AJAX request should validate the slug availability before the user submits
screenshot from 2015-11-21 21 41 22
.

Complete AdminLTE integration

Version 5.0-alpha has changed to AdminLTE bootstrap theme.

The integration is so far partial, thus requiring to tie loose ends.

  • Remove/Replace Mock Components.
  • Remove duplicated links (if any).
  • Enhance navigation flow.
  • Add titles, subtitles and meaningful captions.

Extract Backend into a Package

Aiming to get a cleaner and decoupled application structure, the Backend is extracted as a package with it's own MVC set.

This also allows site owners to develop and install their own site management module according to their needs.

Tests are passing and package is working but some more design and cleanup will heavily take place.

Add instructions texts for main flow screens

In order for user (and developers) to better understand the usage-flow of the app;

Add instructions text upon

  • Businesses directory browsing
  • Book appointment
  • User subscription to businesses
  • Message when My Reservations is empty

Add CalDav integration

Allowing the user to synchronize events with his favorite CalDav calendar tool would make it easier to use and provide a better UX.

Integration would allow

  • Businesses
    • Automatic Vacancy update according to User's calendar (eg. freelancers).
  • Contacts (customers)
    • Automatic Appointment generation in personal calendar.

TYPO: Subscriptions

The typo suscriptions is found URLs and in site text.
Correct spelling should be subscriptions in English.

Don't know if you'd like to fix route and user-visible text only or fix filenames as well.

Post-Login redirect to intended

When a user is entering a specific URL as guest (no login), the post-login event should redirect back to this requested URL.

Example:

  1. Guest user enters timegrid.io/testalias
  2. Guest is requested to login
  3. Guest performs login (only oAuth process is affected)
  4. Identified user should be now redirected to timegrid.io/testalias

This is not actually happening, the user is being redirected to default timegrid.io/ home.

Blocked g-recaptcha-response field which is required

This may be because I am in China, but the field for this doesn't appear. I can't imagine where it is, though, because the UI looks rather complete. If this is not because I'm a China user, then there is something wrong happening here -- requirement without field, can't complete registration.

Browser: Firefox 42
OS: OS X 10.10.5
timegrid environment: demo.timegrid.io
timegrid version: ?
Location: China

timegrid_io

##

Extract booking library as a L5 package

Extracting the booking/reservations functions as a L5 packaged library will allow easy integration with any Laravel website.

Plus, this package will be released under MIT license.

Missing translation keys

Many validation alert messages are missing

Validations:

  • /user/business/X/contact/create
    • validation.min.string

Other:

  • /manager/business/X
    • Preferences.App\Business.appointment Code Length.label

[doc] Write storytelling of application workflow

Storytelling of application workflow is basic part of user-manual and development-roadmap.

In order to ease understanding of the purpose and how-to-use of the application, a clear text and simple storytelling must be written.

Routes rework for sluggable support

With the intention to have SEO and user friendly urls with the Business slug as root, a routing rework is needed.

Now timegrid.io/manager/business/25

After timegrid.io/your-business

Business preferences updating delayed

visit /manager/business/{$id}/preferences
and update a setting.

Redirected to /manager/business/{$id}/
Visiting /manager/business/{$id}/preferences again shows old preferences for up to a minute.

dd($preferences) on the getPreferences() method of BusinessController shows that the values are updated but that is not reflected in form immediately.

Composer Packages need review

Review and reorganize packages.

There are some packages that:

  • need to get moved to require-dev
  • are probably not needed anymore
  • should be in require

Error in fresh installation

When I install this app , suddenly I saw this error "Fatal error: Uncaught exception 'ReflectionException' with message 'Class log does not exist'" . I don't have any idea about this error in this fresh installation . How to fix it ?

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.