By the end of this module, you would have achieved:
- Introduce yourself, what you want/need to learn, and what you would like to build (your dream app).
- Do it in developer style (great first step if you aren't yet a developer).
Welcome to App From Scratch, where you will learn to build your dream web apps "from scratch", no previous experiences necessary.
My name is Yinso Chen, and I'll be your guide at App From Scratch. I have been building web apps for two decades, and working with Node.js actively since 2012. I got the need and the itch to build at least one more app, and I'd love for you to join me for the journey.
The idea is straightforward. I'm going to build my app, specifically, this website, which will be a learning platform for you, and I'll show you how I do it at every step along the way. You'll then try to apply the knowledge toward building your app with your passion and perspiration.
As you go through the process, you'll run across challenges and have questions . If you raise them, I'll do my best to get them incorporated into the lessons (and as more people participate, others will likely help answer as well).
If you have passion, commitment, and persistence to follow through, you'll find your dream app isn't that far away from being created by your own hands.
Our first lesson, module zero, is meant to get us ready for the long journey ahead. Building apps is equivalent to running marathons, and it means we have thousands and thousands of steps ahead of us, and we need to have the right preparation.
The most important first step, is to identify where we are going. If we don't know the destination, we can't get there.
The destination is the outcome - your app - what is the app that you want to build? Who will be the users? What would they do with the app, and how would they benefit from using the app?
You might or might not have thought your ideas through yet - but you should have some ideas, and the first step is for you to write them down, and we'll do this in developer style.
Your first assignment is to do the following:
Fork the module-zero repo to your GitHub account.
Clone the repo locally.
# choose a top level folder where you want to clone repos. I choose $HOME/projects cd <your top level project folder> # clone the repo git clone firstname.lastname@example.org:appfromscratch/module-zero.git cd module-zero
Copy the template in the
participants folder and fill it out with your profile (more detail below)
# go into the participants folder. cd participants cp _FILL_ME_OUT.yaml <your name>.yaml # modify the file's content...
Save and commit to the repo. Push it up.
# ... save the file. git add . git commit -m "adding my profile" git push
Open a Pull Request for merging back into the main repo.
(Optional) Like and watch the repo for changes.
If you are already a developer, this should be familiar and a breeze. If you are a complete beginner, congratulations, this will get you started on becoming a developer.
It ought to be easy to modify the template even if you haven't seen it before. However, definitely let me know if you find YAML to be difficult.
As you make a copy of the template
_FILL_ME_OUT.yaml, you'll notice the following questions.
Your real name is preferred, because this is going to be a professional endeavor.
You are likely to meet others through this effort, possibly working together, and knowing each others' real name will help you network and potentially gaining referrals (how would people know that
1337hacka is you when you need it?).
However, it's certainly your choice of how you would like to be referred.
We did say networking, right? Feel free to fill out your social network profiles here - the ones you care to share anyway. Just keep in mind, anything that you share will be public and stay public, so be sure not to share things that you rather keep private.
So be sure to vote accordingly.
The same as above - this will help inform what you think is important for you to build your apps. If you are a complete beginner, you'll have to start from ground zero, but if you already have some experience and you know that you need to improve in some areas, please feel free to list them.
Although the goal is to support the 3 major development OS (Windows, OS X, and Linux), if the majority is on one platform then they can get prioritized accordingly as well.
This is where you can talk about your dream apps, what you want to build in vivid details.
Knowing what your app does can potentially help shifting the course focus as well. For example, if a lot of apps are focused on utilizing real-time messaging, then it'd make sense for me to add a module about real-time messaging.
Beyond the utility for prioritization, the more you can describe your dream app in detail, the closer you are to understand what you need to build and hence closer toward start building it.
Furthermore, it can be a lead for you to find someone to work with together. People usually have similar ideas, and by having a detailed description others with similar ideas can find you.
Though, don't get bogged down by thinking too hard of what to write down though. You should time box this to no more than 1 hour for Module Zero. We'll come back and revisit this in future modules.
Here are a few questions that you can try to use to write down details about your app.
Oh, one last point, if you harbor the belief that ideas are best kept secret, it has been shown time and again that ideas are a dime a dozen, and usually the earlier they get polished by others, the better (this is what I'm doing by the way - App From Scratch will be polished by everyone from the very beginning).
But it's up to you of course. Feel free to share what you care to share.
That's it for Module Zero. Looking forward to receive your pull requests!