Interesting. I’m curious as to how you handled the dynamic sub domains?
Very impressive.
Interesting. I’m curious as to how you handled the dynamic sub domains?
Very impressive.
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.
Awesome Ken! How did you design the DB for MultiTenant? One database for each account or all in one single DB?
Single DB with tenant_id on all tables. Lots of foreign key fun to enforce integrity/separation.
Looks great Ken.
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.
Great job, Ken!
Excellent work!
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
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.
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.
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.
Very nice!
Great Ken excellent work… is this done completely using Wappler other than integrations?
Yes, the app, not the marketing site, is done completely in Wappler.
Great work, Ken!
Really good job!!
Need full lessons for making app
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
Very Nice…
Can you assign a meal plan to an individual user?
Cheers!