In my last post I described my struggle with starting to learn a new programming language. After I found my problem to solve I could not wait to start. After my day job I opened Xcode, created a new project and ... nothing.
How do we start a project from the ground up?
Making A Plan
Jumping straight in can be a problem later on in the project. Making even a very high level architecture is always a good starting point to a project. It can be done as a mindmap, a todo list or even a small drawing on a piece of paper.
I wanted to make sure that my architecture allows me to update the application later on without rewriting most of it.
Data Storage
I know that macOS applications can store their data in UserDefaults. This would allow me to just use this instead of creating my own solution for storing the settings.
Using default mechanism is always a good way to start in a new system. There is a lot of help and you can find a lot of answers to your questions here or on other sites.
Backend
As a C/C++ programmer it is quite hard for me to change my programming style. When writing python I often struggle using the pythonic style and fall back to using a more C++ like syntax. For this project I challenged myself to try to use a Swift-like syntax.
The main function of the backend is the file handling. Getting the current files in a folder and move/copy them to a different direction.
- Swift-like syntax
- Copy / move files
Frontend
The application I had in mind should look like a normal modern macOS application. A minimal main view without to much clutter, a settings screen separated from the main view and working dark-mode support
- Minimal main view
- Settings screen
- Dark mode support
The First Steps
For this project I started with a small drawing of the UI and the inner workings of my backend. In the following picture you can see my initial thoughts.
The first concept does not have to be perfect. It should help you make decisions about the architecture and design.
Doodle a UI, sketch out the inner workings of the backend. It will help you form the idea in your head how to start.
The first versions of the application are already done, getting more features over time. I want to continue this as a small series. Publishing more stories in the next weeks on my journey to learn a new programming language and solve my problem.
Image by StartupStockPhotos from Pixabay - Thank you!
Top comments (0)