1. Starting a new project2. Local development3. Version control4. Project management5. Remote environments6. Environment variables and secrets7. Databases and files8. Cloud services and Terraform9. full-stack-template specific details10. Production setup11. Running in production12. Creating a custom command13. Creating a custom plugin14. Creating a custom template15. Creating a zone16. Zone maintenance17. Zone monitoring18. Zone recoveryAPPENDIX A: Technology tutorialsAPPENDIX B: Software designAPPENDIX C: Modern server infrastructureAPPENDIX D: SecurityAPPENDIX E: Data protection and privacy (GDPR)

PART I: Basics

1. Starting a new project

1.1. Prerequisites

If you haven't installed Taito CLI yet, read the 1. Introduction and 2. Installation and upgrade chapters of the Taito CLI manual, and install Taito CLI according to the instructions.

If you don't have an existing infrastructure configured and running, read setting up infrastructure and set up infrastucture according to the instructions.

1.2. Preliminary planning, design and validation

Normally you would start your project by doing some preliminary business modeling, project planning, and requirements engineering. However, these are out of scope for this technology oriented tutorial.

Based on requirements you choose your architecture and make some preliminary software design decisions. APPENDIX B: Software design and APPENDIX C: Modern server infrastructure provide some useful information for doing this, but they are not requisite for this tutorial. Note that you should also validate your core architectural and design decisions at the beginning of the project. Questions like "Progressive web app, hybrid app, or native app?" need to be answered before the implementation can fully begin. If you are unsure of some decisions, the validation may include also prototyping, and even performance testing, if it seems essential.

Since this is a tutorial, we can skip all preliminary planning and design, and jump right into the implementation. During implementation you iteratively and incrementally implement your application by defining detailed requirements for top priority features in your backlog, and by designing, implementing and testing each feature one by one.

1.3. Creating a new project based on a project template

Instead of creating a new project, you can alternatively use an existing playground project provided by your organization. You can list all playground projects with taito open playgrounds or taito -o ORGANIZATION open playgrounds. Choose the one that has been created based on the full-stack-template and seems to be up-to-date.

Create a new project based on the full-stack-template by running one of the following commands (a or b). In most cases you should choose the option a. If, however, you work for multiple organizations, you can use the option b to define the organization in question.

a) Create the project using your default settings

taito project create full-stack-template

b) Create the project using default settings of an organization

taito -o ORGANIZATION project create full-stack-template

Follow the instructions provided by the command. Use acme as company name to differentiate it from real companies. You can choose the application name however you like, but if you are using a shared infrastucture, try to avoid naming conflicts with your colleagues. The example application should consist of a web user interface, API, relational database and a object storage bucket. The full-stack-template supports multiple technologies, but during these exercises it is recommended for you to use the default React + Node.js stack.

Next: 2. Local development

1. Starting a new project
2. Local development
3. Version control
4. Project management
5. Remote environments
6. Environment variables and secrets
7. Databases and files
8. Cloud services and Terraform
9. full-stack-template specific details
10. Production setup
11. Running in production
12. Creating a custom command
13. Creating a custom plugin
14. Creating a custom template
15. Creating a zone
16. Zone maintenance
17. Zone monitoring
18. Zone recovery
APPENDIX A: Technology tutorials
APPENDIX B: Software design
APPENDIX C: Modern server infrastructure
APPENDIX D: Security
APPENDIX E: Data protection and privacy (GDPR)