Giter Club home page Giter Club logo

band-o-matic's Introduction

๐ŸŽต Band Name Generator API

Django CI Check

Welcome to the home of the Band Name Generator API! Conceived and developed during the winter break of 2023-2024, this Django-based application captures one man's reengagement with engineering from management. This project serves as a testament to not only a rejuvenating learning process but also an enjoyable stint of growing my work proficiency with ChatGPT.

๐ŸŽฏ Project Vision

The aim was to construct a full-featured Content Management System (CMS) and data pipeline utilizing a modern framework, and delivering a Minimum Viable Product (MVP) for a service powered by the cognitive engines of the future; all within a 2-week sprint. For a while the app was live on Heroku, but I have since taken it down in favor of a simpled AWS based solution.

๐Ÿš€ Deployment & Infrastructure

The developed solution is configured for deployment via Continuous Integration and Continuous Deployment (CI/CD) pipeline to a Basic Heroku web Dyno integrated with a mini-PostgreSQL database add-on. This brings the total cost to approximately $12 per month. With the move to AWS the cost is effectively zero, as the lambda function is within the free tier.

๐Ÿ›  Application Design

The application boasts a straightforward design โ€“ it deals with two primary models, Words and Categories, assisted by a helper model, WordCategory, for managing many-to-many relationships. The simplicity of the underlying design makes this an excellent resource for beginners trying to grasp the intricacies of Django. It encompasses various crucial features of Django such as appropriately setting up the admin app, the REST framework, different kinds of views and templates, testing techniques, etc.

๐Ÿค– AWS Lambda Integration

The awslambda directory is configured to hold the dependencies and files needed to pick a random band name using DynamoDB and AWS Lamdba without the overhead of Django. The Django app is still useful to manage the content locally, and I've added an export endpoint to convert the Django data to a CVS which can then be ingested into AWS.

Because the Django classes build on top of the Lambda work, assembling the zip for AWS is a little tricky, but if you need to add new dependencies to the Lambda function do so via the awsrequirements.txt in that directory, then run:

    docker build -t lambda-bando-app .
    docker run --rm -v $(pwd):/tmp lambda-bando-app \
    /bin/sh -c "mkdir -p /tmp/dist && zip -r /tmp/dist/lambda_package.zip ."

You can upload the lambda_package.zip to AWS Lambda and configure the handler to be lambda_function.lambda_handler.

๐ŸŒฑ Future Directions

Although the functional enhancements for this project might be minimal, its design offers a compelling demonstration of a mini CMS. It will undergo further refining, and will likely serve as a springboard for exploring the synergistic use of React and Django REST APIs in a different pet project. Furthermore, it provided a suitable test-bed to follow disciplined Python programming practices within the DevSecOps framework, and to learn how to better leverage GitHub's tooling.

band-o-matic's People

Contributors

mesolimbo avatar dependabot[bot] avatar

Stargazers

 avatar Dehao Huang avatar

Watchers

 avatar Kostas Georgiou 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.