[updated on 08.09.2019]

This is a WORK IN PROGRESS blog post, where I will share all my steps I did to beta launch my Django React project.

I decided to document my progress within my blog due to three simple reasons.

  • It will serves as a comprehensive checklist of things I need to do
  • I will be held me accountable by sharing all my plans publicly
  • It will help me to learn from my mistakes if my beta launch fails

Why I chose to write and regularly update long ass blog post instead of documenting my progress on Twitter?

That is actually a good question.

I guess because I don’t have many followers on Twitter and it is more comfortable to update a blog post.

I can still Tweet my update with a link to my blog post afterwards.

Ok, let’s do this!

Week 1

Goals

  • Create and put up a coming soon page
  • With an email signup form
  • Deploy Django React project to Linode
  • Share my coming soon page

Day 1

I have been working on my landing page for the last week.

Initially my landing had simple value proposition, but I decided to write better copy for beta launch and redo my homepage.

People won’t be able to use my app during beta yet, so I need to make sure to explain the pros and cons with plain words.

Once I am satisfied with copywriting, I can focus on adding email signup form and polish my coming soon page.

What has been done today:

  • Create a dummy gmail account with funny name generated by https://biznamewiz.com
  • Create a new Mailchimp account
  • Start a blog post about beta launch execution πŸ˜€
  • Share my blog post on Twitter

Day 2

Today I was so exhausted from full time job I was not sure If I will make any progress.

After dinner and house chores, I had like two hours of my free time until midnight.

So I took a 10 minute power nap and sit to the computer, determined to move the needle.

The main goal is to still complete coming soon page.

But since I was mentally exhausted, I had hard time redoing sales copy on my main page.

After one hour of busy work, fixing Twemoji tags and zero copywriting, I switched tasks and went to Mailchimp to create a newsletter sign up form.

It went much better as it was a straightforward html design.

I finished newsletter form and embedded it into my coming soon page.

I also decided to ditch redoing my sales copy and just reorder coming soon page to make more sense.

Glad to at least finished coming soon page in time with an acceptable design.

I can always tweak it later, right.

What has been done today:

  • Fix Twemoji tags
  • Add questions section
  • Created newsletter sign up form in Mailchimp
  • Tweaked Mailchimp form design with Bootstrap 4 tags
  • Included newsletter sign up form all over landing page

Day 3

Another busy day at my full time job, that was filled with important meetings.

I could not go to the gym in the morning, so I decided to go after work.

That means no free time for beta launch execution as I returned from the gym few minutes before midnight.

Luckily I managed to squeeze some action before work and gym session.

My biggest priority now is to deploy my project to Linode server so I can submit my Django React project to Betalist.

They require you to submit your homepage so they can either approve your submission or reject it.

Hopefully I will get approved.

I am not fond of hardcore devops administration work, but it needs to be done.

What has been done today:

  • Setup PostgreSQL DB
  • Created production python virtual environment
  • Setup DNS names to point my domain to Linode server

Day 4

Sleep deprivation started to kick in.

I always lose steam towards the end of workweek.

Additionally today was the hottest day of the year.

Whooping 36 degrees outside.

I knew I won’t progress much since I don’t really know how to deploy Django React stack on Ubuntu VPS.

There are few guides for Django, but not for Django and React.

It is not clear If I need Node js and npm at all in production server.

Because react files are usually compiled into one huge static javascript file, that is server to browser right?

Also I have to figure out how to configure Gunicorn, Nginx, Supervisor and other services before my project is reachable in the browser.

I guess I have to study Stackoverflow and go with trial and error way to achieve this task.

What has been done today:

  • Cloned project from git repository
  • Installed Python packages from pipfile
  • Installed Node js and npm

Day 5

Friday is the worst. I barely function from sleep deprivation and workout exhaustion.

I procrastinated a lot today by rather reading about affiliate marketing and going down the rabbit hole.

Interesting stuff, but not really important right now.

Still fighting with deployment of Django React on Ubuntu server.

At least I ticked off some busywork around, that needs to be done anyway.

Domain is still not accessible and returns and error.

What has been done today:

  • Created dedicated Django config files
  • Redid some hard coded variables in config to dynamic ones
  • Cleaned up repo from development assets
  • Prepare .gitignore file for production environment

Day 6

Today, I faced a major road block when making Django database migrations.

Even after two hours of googling I could not find any solution.

Command, “manage.py makemigration”, that usually works on local environment, ends with an import error.

Day 7

This is a last chance to tick off all tasks I planned for this weekly challenge.

I decided to really focus on solving my issues with deploying Django and don’t stop trying until I made some progress.

After two hours of trials and errors I found out, that the root cause was in wrong permission settings.

First, when I executed command “python manage.py makemigration” outside pipenv, it compained that Django module was not installed.

The solution was to execute command inside pipenv environment.

Second, my Django project was created by root user.

But all commands are executed by another user account.

The solution was to give the user write permission to all migration folders directly.

Then it was about following step by step guide on how to deploy Django stack on Ubuntu.

I am really proud of myself, that after more than 7 month of trying, I finished such a big project myself.

From zero coding knowledge to a landing page working on production environment.

Since Django React project is Live, let me officially introduce you to The Hustle 😍.

You can visit The Hustle beta landing page here πŸ‘‰ https://www.thehustle.app

Now I can focus on content development and getting some traffic to my site.

What has been done today:

  • Make Django migration files
  • Migrate Django models to PostgreSQL DB
  • Fix static root and media urls configuration
  • Create Django superuser
  • Setup Gunicorn configuration
  • Setup systemd service and create a socket file
  • Setup and configure Nginx to serve http requests
  • Setup a SSL certificate for safe browsing
  • Add site to Cloudflare

Week 2

Goals

  • Write a welcome mail
  • Write two blog posts

Day 8

I failed to tick off all my goals from previous week so today, I made sure to finish em all.

The only thing left was to share my landing page to the world.

I made a tweet and submitted my project to Betalist and Indiehackers.

Betalist has a rigorous vetting process and a month long waiting period before they publish new projects.

There is no guarantee my project will be featured and they won’t let me know if my project fails their screening process.

Indiehackers has a screening process too and The hustle is yet to be approved.

The goals for week 2 are clear…start working on content.

What has been done today:

  • Setup google analytics and search console
  • Share my coming soon page on Twitter
  • Submit my project to Betalist and Indiehackers

Day 9

I didn’t progress much with content writing. It is not an activity I can force into.

English is not my native language and each blog article takes from 2 to 10 hours depending on the topic.

Obviously I cannot write as freely as I do on this blog.

I have to do proper research and spend a lot of time editing.

This will be a tough business. I tried to do some keyword research on self improvement topics and realised, that this area is very very competitive.

Day 10

At least I made an outline for my 2 blog posts.

From there I just hope words will flow out of on their own without much pain.

The rest of the day was spent on refactoring my once successful crypto bot.

I cannot write for longer than 2 hours without mental breakdown, so I have to alternate creative work with pure logical work.

Day 11-14

Still working on my blog posts. Most of the time is spent researching and editing text.

I can process about 200 words a day at max.

The reason is a mental fog I get from exhaustion after a day at my full time job.

I am thinking about outsourcing content writing, but don’t want to spend 15 USD for a 1500 word article.

Weekend was spent by catching sleep deprivation and working on my Youtube music channel.

I managed to squeeze only 1 hour of writing on Sunday.

Week 2

Goals

  • Write a welcome mail
  • Write two blog posts

Day 15

Blog post is done. Editing and rewriting content to comprehensible English took me over 11 hours. It is true that there were times, when I just stared at screen and could not write a word.

Regardless I am glad I can now move on and start developing blogging features for https://www.thehustle.app.

What has been done today:

  • Write a blog post

Day 16

I was reading some Django tutorials and cannot decide if I should develop fully featured model – view – template for blog posts or just simply render markdown text-file with blog post content.

Also I am not sure how to add commenting and social sharing system into Django.

Once I clear these things up, I can return back to execution. Just hope I won’t end up in analysis paralysis as always.

What has been done today:

  • Read some Django tutorials

Week 3

Goals

  • Add blog model to Django
  • Create views and templates for blog
  • Add commenting system
  • Add social sharing buttons
  • Write a welcome mail

Day 22

Another week has passed by and I didn’t manage to achieve all my goals.

I hope this week will be more productive.

I did some research on commenting system and I think I will settle with either Facebook comments or Disqus. I am not sure yet.

As for social sharing, I will use share.js for its simplicity. I still have an hour until midnight, so I better start by adding new Django model for my blog.

Day 23-29

Finally I did it. I added blog app to Django, created views and added facebook commenting system. As for social sharing, I chose addthis service for simplicity. I still have to write a welcome mail, but I decided it is not important at all.

Thank you for going through whole beta launch with and see you in the next post.

Share it!