MealPro

Interesting. I’m curious as to how you handled the dynamic sub domains?

Very impressive.

2 Likes

Apache is a proxy in front of the node app, so it has a server alias *.mealproapp.io to allow for the sub-domains. Similarly DNS has a wildcard setup. The tenant is determined by the domain and held as a session throughout the app.

2 Likes

Haven’t tried it yet but it looks gorgeous. Excellent work @mebeingken.

1 Like

Awesome Ken! How did you design the DB for MultiTenant? One database for each account or all in one single DB?

2 Likes

Single DB with tenant_id on all tables. Lots of foreign key fun to enforce integrity/separation. :slight_smile:

6 Likes

Looks great Ken. :+1:t3:

I did not understand anything about the custom domain part. Could you please share about it a bit more?
I have done a similar thing but with Caprover, where the app has a duplicate deployment for each separate subdomain or external domain.

1 Like

Great job, Ken!

1 Like

Excellent work!

1 Like

Love the UI for such a complex set of variables. Could so easily be a mess but its elegant, clear and concise. Great job on the thoughtfulness given to responsiveness. Mighty fine work @mebeingken

2 Likes

Great Job, Ken!
What data schema did you use for making those tables and linking relationships & to create the database queries?

Referring to multiple tables with foreign keys makes me think a relational database like SQL or MySQL would be your choice.

Your knowledge from this Meal planner would be useful to develop a Desktop PC app for Fastfood Restaurants which helps customers make menu choices on a touch screen at the location. Which would generate a printed ticket of the order and cost of the meal while offering a keypad ordering & payment screen & for storing restaurant analysis.

2 Likes

MariaDB for this project and there is simply a tenant table that contains all the tenants. The primary id from that table is required on every other table, and is included in every database action. The value of the tenant id is set once as a session variable and then used in all the db actions.

3 Likes

Yes, both MariaDB and MySQL are relational databases using SQL query syntax. But MariaDB has been updating MySQL deployment especially in mobile app development because MariaDB adds query results caching with Redis, parallel query, read/write splitting and is not constrained by Oracle parameters.

MariaDB and MySQL differences have accelerated in the last 5 years.

What I really find useful when tracking data field changes with MariaDB is that it creates a new record that holds the preceding (older) value before it changed. I used to have to clone a separate table in MySQL with a time of creation field and a new autogenerated key id to link them. Knowing the preceding values & when the value changed and tracking every change by datetime was a necessary requirement for reporting.

MariaDB responded to the request from database developers to eliminate extra queries for such a useful analytic category.

I used to hem & haw over choosing MariaDB over MySQL some years ago but no more.

3 Likes

Very nice!

2 Likes

Great Ken :slight_smile: excellent work… is this done completely using Wappler other than integrations?

2 Likes

Yes, the app, not the marketing site, is done completely in Wappler.

3 Likes

Great work, Ken! :+1:t3:

1 Like

Really good job!!
Need full lessons for making app :slight_smile:

2 Likes

Looks excellent. ( I hope you’ll now have some more time to work on your equally excellent video series.)

Great job, @mebeingken I’m doing something similar but I use aliases (parking domains)

So I can use www.domain.com

1 Like

Very Nice…

Can you assign a meal plan to an individual user?

Cheers!

1 Like