GithubHelp home page GithubHelp logo

dmbrannon / plantly Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 12.92 MB

:seedling: A plant watering schedule web application built using Django.

Home Page: https://www.plantly.tech/

Python 56.33% HTML 41.55% CSS 2.12%

plantly's Introduction

plantly

๐ŸŒฑ A plant watering schedule web application built using Django, hosted on DigitalOcean at www.plantly.tech.

Dana M. Brannon

About this application

I love house plants. There are quite a few studies on how indoor plants can be beneficial to the psychological wellbeing of occupants. But we must remember that they are living things (not just decorations!) and therefore need consistent care and attention in order to stay alive.

I first created an iOS app during my Mobile Computing class that helped remind me when to water my plants, as well as keep a log on each plant to record things like fertilization, repotting, pest control, etc. I realized I wanted to move this to a web based application because I didn't want to pay the (somewhat exorbitant) fees to keep it on the App Store. I decided this would be a great opportunity to get experience with a framework I've been wanting to learn for quite a while now: Django. So this app is my journey to learn Django, and to eventually deploy the app on DigitalOcean with Docker.

Steps I took to create this application

  1. Learn Django: I'm definitely still in the process of learning the framework, but some resources that really helped me out are the Django Documentation as well as Corey Schafer's YouTube series on Django (and of course lots of Stack Overflow!)

  2. Choose a Hosting service: I went with DigitalOcean because the GitHub Student Developer Pack gives you $50 in free credit.

  3. Set up my new DigitalOcean droplet: A droplet is what DigitalOcean calls its scalable virtual machines. This step involved a lot of sysadmin stuff, which I enjoyed getting exposure to. Plus, DigitalOcean has some great resources for this type of stuff (see the Initial Server Setup guide for help on setting up SSH, creating a sudo-enabled user, setting up a basic firewall, etc)

  4. Set up my Django project with Postgres, Nginx and Gunicorn: My DigitalOcean droplet is running on Ubuntu 18.04 (a Linux operating system), which is what I am most comfortable with (our CS department servers were also on Ubuntu). This guide did a flawless job of getting my Django project up and running on my droplet.

  5. Use a Domain Name Registrar: The only way to access my website at first was through an ugly IP address (ex. 123.456.789.01). To fix this, you have to go through a company called a domain name registrar, which manage the reservation of Internet domain names. There are a couple of free-for-1-year options on the GitHub Student Developer Pack, which I would highly recommend checking out. Obviously, I went with www.plantly.tech

  6. Get a Free SSL Certificate: An SSL certificate is a type of digital certificate that provides authentication for your website and enables an encrypted connection. This means your website will start with HTTPS instead of HTTP. Basically, this just means your internet traffic will be encrypted (to keep your users' data secure!) DigitalOcean has another great guide on securing Nginx with Let's Encrypt, which allows you to get a FREE SSL certificate!

  7. Make sure my environment is production-ready: This was probably the trickiest step (aside from making the actual application), because I have never deployed anything before. What made it even trickier is that everyone and their dog has a different methodology for deploying Django apps. I went ahead and just used environment variables to store different settings for my development and production environments. I'm not totally sure if that's the best way to do it, so if anyone has suggestions, feel free to email me.

  8. Implement Testing: Testing is something I have been putting on the backburner of my learning schedule... So I'm glad I finally buckled down and wrote some tests for this app. Although I think it's an important skill to have, it seems like there's a lot of mixed reviews on testing: here's a good TechCrunch article that shows both sides of unit testing (t.l.d.r. badly-written unit tests are almost as bad as no unit tests.)

And that's a wrap! This has been a great learning experience so far, and I honestly can't wait to keep learning more. ๐Ÿ˜ƒ

plantly's People

Contributors

dmbrannon avatar dependabot[bot] avatar

Stargazers

Xin Lin avatar Brian Ruiz avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.