tastyigniter / TastyIgniter

:fire: Powerful, yet easy to use, open-source online ordering, table reservation and management system for restaurants
https://tastyigniter.com
MIT License
3.02k stars 988 forks source link

Road to stable v3 #442

Closed sampoyigi closed 3 years ago

sampoyigi commented 4 years ago

Here’s a list of tasks that needs to be done to get us to a stable v3.

The goal of this list is to briefly mention plans and work in progress, feel free to submit a PR if you want to help or leave a comment to discuss your ideas and feedback related to the above list. I will be updating this list as many times as necessary nothing is set in stone.

BTW, I'm happy to explain further on any item that needs explaining :)

ryanmitchell commented 4 years ago

Only just noticed this.

Limit the number of orders and reservations to allow per each timeslot I've done the orders limit for a couple of restaurants as an extension, so have the logic that I could bring into core. Some restaurants limit by number of 'covers' rather than orders, i.e. only items from certain categories count towards the total. Do you think this would be worth implementing as part of it?

Improve admin dashboard statistics to include total commission and turnover I can work on this - what do you mean by total commission and turnover - just so I'm clear what the statistics are that need created.

Real-time order progress on the checkout/success frontend page I'd also be happy to work on this if you have any guidelines as to what you are looking to achieve on it.

Another one to maybe add to the list - ability to add reviews after the meal. Currently you can only add a review on the success page - there needs to be a way of adding reviews after, either with a follow up email or a link that persists.

sampoyigi commented 4 years ago

Do you think this would be worth implementing as part of it?

I don't think it's a common-enough use-case.

Improve admin dashboard statistics to include total commission and turnover

Erm 🤔, the total commission part is more for multi-vendor set up so let's skip for now. As for the turnover, I meant the total table turnover rate, measured by how often tables are occupied during a measurement period.

Real-time order progress on the checkout/success frontend page

The idea here is to use the broadcast extension on the checkout/success page to update order information such as order date time and status in realtime and also include a progress bar for progress until the order is delivered/completed.

Another one to maybe add to the list - ability to add reviews after the meal.

There's already the ability to add a review from the single order page after the order as been marked as completed.

ryanmitchell commented 4 years ago

I don't think it's a common-enough use-case.

No problem. So add admin panel options for max orders and reservations per time slot, and once that number is met prevent orders (maybe even hide the time slot?).

Improve admin dashboard statistics to include total commission and turnover Erm 🤔, the total commission part is more for multi-vendor set up so let's skip for now. As for the turnover, I meant the total table turnover rate, measured by how often tables are occupied during a measurement period.

Thanks for clarifying

Real-time order progress on the checkout/success frontend page The idea here is to use the broadcast extension on the checkout/success page to update order information such as order date time and status in realtime and also include a progress bar for progress until the order is delivered/completed.

Do you have a layout in mind for it, or should I just work from a blank slate?

Another one to maybe add to the list - ability to add reviews after the meal. There's already the ability to add a review from the single order page after the order as been marked as completed.

Is this in the admin panel? I mean't for end customers. If there is a link do you know where I can find it - I don't recall seeing it and would love to add it to order emails.

sampoyigi commented 4 years ago

So add admin panel options for max orders and reservations per time slot, and once that number is met prevent orders (maybe even hide the time slot?).

Right

Do you have a layout in mind for it, or should I just work from a blank slate?

It should use the current layout with the addition of a progress bar or something fancy below/above the status name and comment

If there is a link do you know where I can find it

The frontend order page displays a review form when the order reaches a completed status. One can easily use the Review component on a new page if they want a separate page for adding reviews.

Screenshot 2020-08-05 at 15 56 53
ryanmitchell commented 4 years ago

Don't know how I missed the review page - thanks for highlighting it. I've opened PRs for the others.

ryanmitchell commented 4 years ago

I think something else that would be worth adding before stable is allergens.

So a new area in the admin for adding an allergen maybe similar to menu options. Allergens have text and optionally an image. Then on the front end they are displayed under the menu item either as text or image (can be selected in the component).

The only UI issue for me would be how to mark allergens as being on a menu option rather than a menu item - it would be a bit difficult to squeeze that in with the current UI.

babelattke commented 4 years ago

Finally something I think I can help with. Most of the changes I do are slight modifications to the code. Bu I've been working on an extension that started with that concept (Allergens) but ended up being like a Menu Items Tag. I based the idea on categories assignation behavior so an item can be related to more than oneand then displayed in the storefront. I was able to make it work as an extension with some guidance from a PHP developer. But it's not 100% complete. However I'm pretty sure you guys can fix everything really fast and even improve it.

Please let me know if this could help.

Screenshot from 2020-08-12 07-31-33 Screenshot from 2020-08-12 07-31-57 Screenshot from 2020-08-12 07-32-04

Note: I decided to leave his Dev name because without his help I wouldn't have being able to make it as an extension rather than just manual db and code modifications.

ryanmitchell commented 4 years ago

@babelattke this looks like a great start - similar to what I was thinking. But the same UI issue - of how do we attach it to menu option eg for some of our restaurants we have a flavour as the main menu item (e.g. Curry sauce), then you choose the filling as a menu option (Chicken, Prawn, Vegetables). So the menu option would need an allergen somehow too.

Any thoughts on this @sampoyigi ?

sampoyigi commented 4 years ago

@babelattke this is great, I would have gone with the menu item tag approach as well. Great work by the dev :) Do you have the extension on a public repo?

@ryanmitchell But the same UI issue - of how do we attach it to menu option

I think it will be attached the same way as the menu. Using the tags approach both menu items and options can have same or different tags.

babelattke commented 4 years ago

@sampoyigi no I haven't upload that yet because as I mentioned it's not complete. However I'll do it later today. After that should I add you guys as a contributors or transfer the repo to you ?

sampoyigi commented 4 years ago

Hmm, what do you think @ryanmitchell? Say we work on the Allergens feature as a contributed extension, who maintains it and under what vendor?

ryanmitchell commented 4 years ago

Would it be an extension or do you think it would be in core? My vote would be in core for what its worth - feels like something important.

If not I'm happy to take it on.

sampoyigi commented 4 years ago

Calm, you can work to add it to the core.

ryanmitchell commented 4 years ago

@babelattke any luck uploading it somewhere to give me a base to work from?

babelattke commented 4 years ago

@ryanmitchell my bad, sorry for the delay. I just uploaded the files and added both of you as collaborators.

https://github.com/babelattke/ti-ext-tags

Please let me know if something else is needed.

ryanmitchell commented 4 years ago

@babelattke Perfect - thanks.

ryanmitchell commented 4 years ago

@sampoyigi On "API: use JSON:API specification in response" - from what I can see we need to:

Did you have any other changes or requirements?

the spec also recommends camelCase over underscores - whats your thoughts on that?

My suggestion is that this can mostly be done at the transformer level? Some in TransformerAbstract and some in the resource specific transformers.

Edit: seems the pagination is correctly handled by Laravel already.

sampoyigi commented 4 years ago

@ryanmitchell yep, that's pretty much it from what I remember. Leave this one to me as apart from JSON API compliant, I also want to improve the transformer code API to provide full support for handling relationships, multiple media-types something similar to https://github.com/cloudcreativity/laravel-json-api

ryanmitchell commented 4 years ago

Improve opening hours: suspend ordering for the current day, special hours, block dates and time (tableagent)

I don't know if you've seen how Facebook ads handles scheduling, but its pretty intuitive. You can drag and highlight hours in the day, and you can have multiple and seperate blocks in a day, which is pretty nice. See attached screenshot. Screenshot 2020-09-29 at 08 41 08

This sort of approach would give a lot of flexibility in terms of opening hours (eg open for lunch, closed for some hours, and then open again for dinner). I found a JS plugin that does a similar thing: https://www.jqueryscript.net/demo/Table-Based-jQuery-Calendar-Schedule-Plugin-TimeSheet/

Not sure how this lines up with what you have been thinking of.

sampoyigi commented 4 years ago

This definitely solves a lot of design issue with the current controls, I love it! People looking for split opening hours would also love this!

I actually started working on this a few days ago but got stuck rendering the controls, created a new ScheduleEditor form widget which we can work with. I'll update you here once I've pushed my local branch so we can base the PRs off it.

sampoyigi commented 4 years ago

Branch pushed: feature/schedule-editor-widget

I'll leave the milestone to you to complete ;) We should also implement working schedule overrides.

ryanmitchell commented 4 years ago

Ha thanks :) I should get some time on it this week and we can see what still needs done after that.

sampoyigi commented 4 years ago

Improve opening hours: suspend ordering for the current day, special hours, block dates and time (tableagent)

Simplified this to focus only on split hours, we'll implement schedule overrides part maybe in v4...

ryanmitchell commented 3 years ago

Some things that have been asked of us in the last couple of weeks which would be worth thinking about adding:

  1. Ability to be open on 'special days' or different times on certain days (eg not usually open on Wednesdays but its Christmas Eve so we are open, or usually open 3-7 but on Christmas Eve is 3-10)
  2. Ability to only offer pickup/delivery on certain specific days, ie offering delivery on 23rd/24th but dont any other time of year.
  3. Ability to create linkable urls to delivery/pickup selected on a specific date (this can be done easily with some code additions but worth considering).
sampoyigi commented 3 years ago

Somehow missed this. I plan on adding 1 and 2 as an extension and I'll accept a PR to add 3

ryanmitchell commented 3 years ago

3 Is probably an extension rather than core - ability to provide urls that then set the right session variables. I'll work on it at some point.

ryanmitchell commented 3 years ago

With a lot of joy I am closing this :)