Develop an application
This topic provides a high-level overview of the required steps to create a minimum viable product with the Thinkwise Software Factory. Each step contains a link to more detailed documentation about the subject. For a large application, develop a minimum viable product one module at a time. Then extend the application from there.
This process does not cover creating the specification for your application. You can create a specification in the Specification menu or with an external tool.
You can find definitions of Thinkwise-specific terminology in our Glossary of terms.
Prepare to build a Thinkwise application
Before you start building an application, make the following preparations:
-
Required:
- Access to a Thinkwise Software Factory that has been configured already.
- The specification that will form the basis for your data model.
- The RDBMS type you will be using for your application. For more information, see Use multiple RDBMS types in a model.
- The design of your required processes and business logic.
- Knowledge of the Software Factory naming conventions.
-
Optional:
- Connect the Thinkwise Platform to an MCP client, such as Claude Code, to develop applications using AI. For more information, see Set up MCP in the Thinkwise Platform.
- Upcycle your legacy applications with the Thinkwise Upcycler to get a head start on your new Thinkwise application. For more information, see Upcycler.
- Application languages you want to support in your application.
- A model with a standard branch structure.
- House style requirements, if applicable.
- Existing components that you want to use, if available:
- Solutions from the Thinkstore. For more information, see Thinkstore.
- Icons, themes, and other visual assets.
- Domains, screen types, and other model components.
Use generative AI to develop an application
If you have set up an MCP client, you can use generative AI to develop your application. See Set up MCP in the Thinkwise Platform for the setup instructions.
Set the MAIN branch to Read-only before you use MCP to develop in the Software Factory. This prevents the AI agent from making changes to your main branch.
Use the following general guidelines when developing with generative AI:
-
If you are developing from scratch, it is best practice to first use Plan mode. This is similar to writing a specification for your application before actually building it. Describe the overall structure, components, and behavior of your application in the prompt. Claude Code will present you with a plan based on your description. See also Analyze before you edit with plan mode. You can then add comments or make adjustments to the plan before proceeding with the actual development.
-
Work towards a Minimum Viable Product (MVP) for your application. This allows you to validate the core functionality and gather feedback early in the development process. You can later extend the application by adding more features and refining existing ones based on feedback and testing.
-
Use the steps on this page to split up your work into phases, where you focus on one aspect of the application at a time. This helps manage complexity and ensures that each part of the application is well thought out before moving on to the next phase. For example, first focus on defining the data model, including tables, columns, and relationships, before moving on to other aspects such as user interface and business logic.
-
Test each phase before moving on to the next one. This ensures that any issues are caught early and that each component functions correctly within the overall application.
tipIt is possible to review your code using the command
/code-reviewin the Claude Code CLI. Alternatively, start a new session and ask Claude Code to review your code. Note that this does not replace thorough testing and code review by developers.
Use AI skills to support the development process
Thinkwise provides skills that you can add to your development environment to extend the capabilities of your AI assistant. A skill is a packaged set of instructions that guides an assistant through a specific, recurring type of task. Skills can significantly speed up your development workflow by providing immediate guidance and automating repetitive tasks.
The process below is described for Claude Code, however, the skills can be used with other AI assistants as well. Add the files to your development environment, then ask GitHub Copilot to move them to the appropriate skill directories.
Claude Code automatically loads and applies skills when relevant tasks are detected. For example, Claude can load skills when you are creating a control procedure, setting up a cube, or configuring a process flow.
Claude Code looks for skills in two places:
| Scope | Path | Applies to |
|---|---|---|
| Personal | ~/.claude/skills/<skill-name>/ | All your projects |
| Project | <your-project>/.claude/skills/<skill-name>/ | Just that one project |
To use skills with Claude Code:
- Download the skills from Thinkwise GitHub.
- Add the skills to either your personal or project skill directory as described in the table above.
- Claude Code automatically invokes the relevant skills based on the context of your entered prompt.
It is also possible to invoke skills directly using the Claude CLI, using the
/skill-namecommand. For more information, see Extend Claude with skills.
Set up a new Thinkwise application
Create a model
If you haven’t created a model yet, follow the steps below to create one. See also model.
menu Models > Model overview
- Execute the task Create model
.
- Confirm that you want to start working on the model that you just created.
Create domains
See also domains.
- You can also create domains when working on the data model.
- If you have existing domains that you want to use, you can import them.
menu Data > Domains
- Create the domains that you need. Domains connect table columns to their user interface representation. It depends on the data types that are present in your specification which domains you need to define.
- If you create a domain that requires defining static elements, add them on the Elements tab. Examples of such data types are the bit and tinyint data types.
Create the data model
See also data model.
menu Data > Data model
- Go to the tab Tables.
- Add the tables of your data model. Your tables represent screens in your application. You can customize these screens later when you define your screen types.
- Add columns to your tables and define their properties in accordance with your dataset.
We recommend that you do not set your column types to Hidden, to make development easier. You can further restrict access to columns when you define your subjects.
- Go to the tab Design.
- Add references between the tables. You can also do that on the References tab.
- Go to the tab Validation.
- Validate your data model.
Create one or more menus
See also menus.
menu User interface > Menus
- Add at least one menu. You can create a list bar, a tile menu, or a tree view menu.
- Go to the tab Design.
- Create a group for each main menu item.
- Drag and drop one or more of the available tables into each menu group. Each of these tables will become a menu item.
Add translations
menu User interface > Translations
Optionally, add translations for the items that you have created so far. If you choose not to do this yet, the user interface texts will be displayed between square brackets.
Create a database for your application
See also creation.
menu Deployment > Create
- On the tab Generate definition, execute the task Generate definition
. Once the progress bar reaches 100%, your model definition is ready.
- On the tab Validate definition, execute the task Execute all validations
. A validation is run on multiple validation groups, and a report is created for each group. The icons in front of each validation group indicates whether the validation was successful.
If you encounter an error, you must resolve it before you can continue. If you encounter a warning or information icon, read the message carefully and resolve the issue if possible.
- On the tab Generate source code, execute the task Generate source code
. Once the progress bar reaches 100%, your source code is ready.
- On the tab Execute source code, execute the task Connect
. A connection to the database is established.
- Execute the task Execute all code files
to deploy your model to the database.
Your application is now available. There is no data yet. In Set up the user interface of your application, you will make your application look neat and professional.
Set up the user interface of your application
To set up the user interface of your application:
Set up screen types
See also screen types.
We recommend that you are consistent in which screen types you choose, and that you take into account what your user needs at an early stage. By default, your application will use predefined screen types.
You can also import existing screen types, if available These might not display your content exactly the way you want. In that case, you can create custom screen types to match your needs:
menu User interface > Screen types
- Find the screen type that looks closest to what you need and copy it, or start with a clean template.
- Assign your screen type to the corresponding subject(s).
- Go to the tab Design.
- Edit your screen type by adding or removing components.
Customize subjects
See also subjects.
menu User interface > Subjects
- Customize your subjects. Subjects are collections of data from your model that are displayed and edited in your application. They can be based on tables or views, and they are highly customizable.
- Customize each component that you use, so that your screens match the requirements of the users.
- Add look-ups for references to columns, tables, etc.
Customize the user interface
- Add conditions and/or prefilters to the subjects to further fine-tune the data that is shown in your application.
- In the menu User interface > Themes , create or import a theme for your application.
- In the menu User interface > Icons , add or import a collection of icons that you can use throughout your model.
- In the menu User interface > Translations, add translations for the items that you have created so far. You can execute the task Translate to automatically convert the names of your objects to a more readable format. You can also manually translate your objects.
Your application should now start to look and feel the way you want. You can continue fine-tuning the UI, or move on to Add functionality to your application first.
Add functionality to your application
To add functionality to your application:
Add custom business logic to your application
See also business logic.
menu Business Logic > Functionality
- On the tab Control procedures, create one or more control procedures. Available standard code groups are defaults, layouts, triggers, and more. See the overview of the available logic concepts for more information about the code group options.
- On the tab Templates, add a template.
We recommend not to add SQL code to your template yet. If no code is present, the Software Factory puts a placeholder for your custom code when generating the definition. It will be easier to add your SQL code after the first definition generation, because then you can see the names of the available parameters. - On the Assigning tab, execute the task Generate code group
.
- Assign a template (that is to be created automatically) to one or more of the available program objects.
- On the tab Deploy, generate the definition
.
- Show
the generated code.
Here, you can see the header of your code, and it will be clear which parameters are available and what they are called. - Write your SQL code where it says "Insert your code here", and generate the definition again to apply your functionality.
- Go to the tab Validation.
- Validate your business logic.
- Go to the tab Deploy.
- Execute the code for all
or a selection of
program objects from a control procedure to the database.
- Go to the tab Unit tests.
- Add a unit test to test the functionality that you have just developed.
Add one or more process flows to your application
See also process flows.
menu Processes > Process flows
- Create one or more process actions.
- Go to the tab Design. Your process actions are shown here.
- Arrange your process actions in the correct order. The first action should be Start and the last action should be Stop.
- Connect each process action to the next with a process step.
- Go to the tab Validation.
- Validate your process flow(s).
Ensure the quality of the application's code
menu Quality > Code review
- Assign control procedures and templates that have not been approved yet to a reviewer.
After setting up your application, you can continue to add more business logic as needed, and refine it by finetuning the user interface.
What's next?
Once you have a minimal working application, explore the following subjects to build a mature application:
- Quality assurance. Check the validations and add tests to improve and guard the quality of your application. Use the Quality dashboard for a good overview of the quality of your branch.
- Access control. You can add custom roles to your application to control user permissions and access. Take advantage of default user groups to quickly set up user groups and role assignments.
- Analysis. Once your application is deployed, you can use the Analysis menu to inspect metrics and management information about the models in the Software Factory development environment. You can also calculate the functional size measurement of your software by using function point analysis.