There is a difference between ‘just’ programming and software development. You can have excellent programming skills, but this doesn’t imply that you can develop a software (system). Creating a software solution involves substantial more steps. This series is not only intended to support you in developing your first own project. Furthermore, we want nothing less than helping you to understand which methods are needed to structure an idea and finally resulting in a high-quality software solution. Therefore, during this series we examine all steps from expressing ideas, leading these thoughts to prototypes and start writing source code. To writing source code not only practical but efficient, we introduce technologies and patterns. These enable you to build a high-quality solution for global audiences and increasing demands.
We want to introduce »PoGoRaidCo«, which is an acronym for Pokemon Go Raid Collaboration and is the project we are following during this series. PoGoRaidCo helps Pokemon Go Players to find teammates to encounter Raids, which are bosses you often need a couple of people to defeat successfully. Hopefully, this problem domain is more curious than designing an online shop or an enterprise resource system.
Before we start to write source code, we start by discussing the ideas. To be more precise, we examine the benefits of customers (Pokemon Go Player) are getting from our product. After that, we transform these ideas into different prototypes, appearing as wireframes. In the next step, we can start the actual development process by choosing the architecture of our product. Finally, we are ready to fill this architecture with life with thousands of lines of code.
Notwithstanding that we discuss the architecture and pattern, we want to provide you a preview witch technology we are going to discuss.
The frontend and backend
Talking about the frontend, we start by building a ‘classical’ .NET Core MVC based web application. Later on, we move towards a Single Page Application (SPA), which is going to evolve towards a ‘progressive web application’ (PWA). Both are based on Angular. Staying on the cross-platform track, we introduce Xamarin.Forms as a tool for developing native applications for Android and iOS. We develop the Android application even further so that we can use it as a kind of ‘addon’ for PokemonGo.
Our backend uses .NET Core and provides many features like authentication, sending emails, hosting a simple chat system. To ensure quality and extensibility in the backend, we use techniques from the ‘Domain Driven Design’ (DDD).
With regards to concrete technologies, the project uses the following topics
- C# and .NET Core
- Patterns from DDD
- Model-View-Controller (MVC) pattern with ASP.Core
- Using Bootstrap to create responsive web application
- Inversion of Control (IoC) and Dependency Injection (DI)
- Unit testing with xUnit
- Integration test with xUnit and ASP Core testing framework
- Using Google Maps API
- Implementing authentication with external providers with using IdentiyServer and OpenId Connect
- Using an API to sending emails
- Bidirectional communications using SignalR
- Concept of Single Page Application (SPA)
- Using angular to develop a single page application
- Evolving a SPA to a progressive web application (PWA) using Angular
- Concept of cross-platform development using Xamarin.Forms as an example
What do I need to know before starting this course?
This course is not a course for beginners. Hence, we expect that you are familiar with the basic concept of programming like object-orientation. Furthermore, you should be able to complete small tasks like sorting on your own. It is a plus if you have already developed small solutions maybe during your study or as an internship. Maybe you are already a junior developer and want to start understanding the work of your seniors better.
A basic knowledge of HTML is a clear benefit.
What language are we using?
Can I expect an in-deep explanation of technologies and patters?
The short answer is mostly not. We intend to ‘paint the big picture’ — a walkthrough from an idea to a product. We discuss each used pattern and technology so that you can follow why we use it, what benefits it brings to our solution, and what are possible risks. However, we provide recommended links and books for further reading.
If you are interested in an in-deep coverage of a topic, you can have a look through our expert section and if nothing suits you, feel free to write us. We are always curious about a suggestion for a new series.
How much time will I need?
Learning and understanding depend on many different factors. Therefore, it is nearly impossible to guess the time you need to ‘complete’ this series. We structured this tutorial in lessons, and every lesson is intended to take a few hours to understand. As always, we assume, that you are not only reading but reading actively: not only copy the source code but try to write on your own. Thus, you get an understanding of how things work.
Where can I get the source code?
For each lesson, if source code is part of it, you find repository or to be exact a branch. You can clone this to get started with a particular lesson. We explain the process of clone a repository/branch later.
What if I found a mistake?
As we are humans, it’s more than likely that you find mistakes in this series. Failure can be related to source code, meaning a function is not working as expected, or either to the text. For instance, an explanation is not understandable, or it contains a spelling or grammar error.
To track these errors, we use the issue tracker from Github. You can access it via (add link). Just open an issue to report an error.
If I don’t understand an explanation or if I have a question, what can I do?
If you have any questions, there are many ways to contact us. You can find these options on our contact page. However, keep in mind that discussions are not only useful for yourself but often a vital resource for others, too. We encourage you to use this issue tracker for the Github repository (add link here) to start a discussion. However, if you want to have a private discussion, the easiest way is to send us an email.
Which software will I need?
The preferred language for PoGoRaidCo is C# and .NET Core. Therefore, there are two options. You could use the completely free and, in some parts, ingenious editor »Visual Studio Code« (add link) or, what we recommend, using Visual Studio 2019.
Visual Studio has different license models. The community edition comes at no charges as long as you develop for yourself, in a small team, or working for non-profit projects. This software- has more features than we are going to use. It’s a solid choice.
Visual Studio 2019 (and 2017) can be installed in different workloads. We use tools from the “.NET Core cross-platform development “ and “Mobile Development with .NET.” If you start the Visual Studio Installer, you can check if both components are installed.
For the development of the single page application, we use Visual Studio Code (not mandatory, intended to show another editor and alternative toolchain). Visual Studio Code is free and open-source tools.
To sum up, there are no costs for software or other license costs.
I have only Visual Studio 2017. Should I install Visual Studio 2019?
We don’t’ use features that Microsoft has primarily implemented in Visual Studio 2019. Therefore, Visual Studio 2017 fits the purpose. However, there are some useful features in Visual Studio 2019, making the work easier. It is also possible to have Visual Studio 2017 and 2019 installed on the same machine as a side-by-side installation.
To give a clear answer: You can use Visual Studio 2017.
In the next post, we will examine the problem domain in more detail. Furthermore, we will use wireframes to create prototypes of important views of PoGoRaidCo.