Git Product home page Git Product logo

meme-generator's Introduction

Meme Generator

Fullstack Developer Challenge during application process for New Monday.

Development

Run ng serve to access development version on http://localhost:4200.

Run ng build -c production to build project.

Documentation

Technology Stack

Frontend Framework

I decided to use Angular because this is my favourite framework. And I have the best knowledge to build easy and fast a good single page application.

To have from the start a good UI, I used Angular Material. With this library it's very easy to build a good-looking web app.

For a good and responsive layout I used Angular Flex Layout. It's a helper to use flex layout with Angular.

To set a good basic for future features I installed ngrx to use it for state management. Especially for features like the gallery and managing personal memes it's a big advantage to have a good state management.

Backend Framework

Due to not enough time I didn't build a backend. But I would choose to write simple Firebase Functions with Node.js and TypeScript. Most of the use cases can be handled direct via the web app and Firebase. And for all other use cases are microservices a good solution.

The first function I want to write would be the applying of captions for the meme. I would not recommend to make this api all direct from the web app, because the username and the password are required. I would store the credentials in the Google Cloud Secret Manager and access them in the backend to have a high security standard.

Database

For the database I would choose Firestore, because it's very easy to access in the web app and for most of the use cases I don't need to access a backend. I think that is very good for smaller applications like this one, but is also very good for scaling if the app grows in the future.

The database would be secured with the Firestore rules and authenticated with Firebase Authentication.

Architecture

Folder Structure

For every area I create an own folder like /memes or maybe /account in the future. In these folders I always use the same structure:

  • /data-access - For handling all data stuff like state management and services.
  • /features - Separate folders for every page. Each page gets also an own module.
  • /ui - Ui components which are used in the feature pages. Every Ui component is a standalone component.

The /shared folder has the same structure and is for stuff that used from all areas.

General

In general, I would access the database direct via the web app to firebase. Also, the authentication. For some further features like the meme captioning I would call a Firebase function.

Delivery

The web app is available on https://nm-memegen.web.app/. The code is hosted with Firebase Hosting.

meme-generator's People

Contributors

henningkuehl avatar

Stargazers

 avatar

Watchers

 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.