Hello All

I have wanted to grow things for a while but unfortunately do not have the space for a garden where I live. However, I do keep a number of windowsill plants and what to make sure that I remember to take care of them properly. As I have written in other posts I often make use of apps to track things that I need to do so things don't get forgotten but this time I want to make my own custom app for my needs. I am splitting this into parts as building an app even through a low-code solution takes time and planning to complete. The first part I'm doing today will cover planning of the basic idea of how the app will work and planning out the database it will require.

Step 1. What should this app do?

I want to be able to:

  • Input details of the plants I am keeping, including details from the seed packet/tag on it's requirements and when it was planted
  • get notifications of when I need to water, prune and fertilise it
  • be able to delay/snooze the notification if a visual check shows the plant doesn't require this yet
  • send back when the notification is completed to mark when it was last done
  • want to be able to check details of my plants

Step 2. Outline what technology I want to use to build this

  • For entering and checking data on the plants I want to use Power Apps (I am using a Developer plan to test this build)
  • Because I want to use Power Apps, there are multiple databases I could use but the one that has the most functionality available within Power Apps itself is Microsoft Dataverse so I'm going to test out using this
  • For notifications that I can delay and then check off as complete I'm going to use Microsoft To Do
  • Power Automate will sit in the middle of these sending details back and forth and updating as required

Step 3. Outline database tables

In excel I outlined what tables I would need and how they would link to each other. I based this on information I wanted to be able to refer to in my app and the information required to generate the notifications I wanted. I ended up with 3 different tables, one for the overall plant species information, one for individual plant details and one for the schedules which would be used.

Screenshot of 3 proposed tables and their columns

Step 4. Set up the database

Now that I have an idea of what I want the tables to look like, it's time to start setting up the actual database. As I've decided to use Dataverse I first need to create a database in my developer environment by going into Solutions and clicking on Create a database.

Screen showing no database exists in my environment yet so it must be created

I am then asked for information on what Currency and language to use (as I am Australian I am using AUD and English), and whether to include sample apps and data which I don't want for what I'm working on so I unchecked that box and completed the creation. It can take a few minutes for it to complete setting up the initial database. Once it has finished you can go into Data>Tables and you will see a number of default tables that were created.

Screenshot of default tables created as part of database creation

To build my tables I click the New Table button at the top of the screen and fill in the Table display name and Primary Name Column display name, the other fields are auto-filled based on what you type in these 2 fields. Note that for the Plant Species table I am using the Species Name for this as the species name will be a unique text field and the tables in dataverse automatically generate a unique ID column. For the other 2 tables I used Plant ID and Schedule ID as they do not have unique text columns.

Screenshot of creating new Plant Species table

The table will take a minute to generate it's default columns, once it has done this you can start adding new columns by clicking the Add column button at the top.

Screenshot showing default columns created via table creation

When filling out the new column details you need to fill in the display name, which data type it is and whether it is a required field, optional or just recommended.

Screenshot of creating the Common Name field as an optional text field

When creating columns where you want to have specific choices available you can select choice (for singular choice) or choices (for ability to select multiple choices) in the data type. You will then need to select the Choice list you want to use for the field or create a new one. As there was no default list for seasons I created a new one which by default has the same name as the column you were creating it for but if you plan to use this for multiple columns you could rename it to something else.

Screenshot of creating the Sow Period Choices list

Because I'm not focusing on creating links within dataverse itself I have just created the linking ID fields as text fields for now with the intention of taking care of how these will be correctly selected in Power Apps. If you wanted to create these as proper links to the other tables you would need to make sure to create the tables in the correct order so that the table you are linking to exists first. Once you have added all the necessary columns you need to click Save table at the bottom of the screen for it to complete the changes to the table.

Screenshot of table with new columns in bold as the table has not been saved

Now all of my tables are built the next step will be building my interface in Power Apps so data can be loaded into the tables, which I will do next time.

Now for the real question, are there any additional changes I should make to my table structure before moving on to the next step?