GithubHelp home page GithubHelp logo

julianpistorius / cmp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from skuzzle/cmp

0.0 1.0 0.0 2 MB

Create and share public counters

Home Page: https://countmy.pizza

License: MIT License

Java 83.15% Groovy 3.02% JavaScript 3.93% HTML 9.35% CSS 0.55%

cmp's Introduction

countmy.pizza

This is the source code of https://countmy.pizza

Count my pizza serves two main purposes for me. Obviously, I use it to track my pizza consume and share the results with everybody (who probably couldn't care less). More importantly it developed to be a serious learning project for various technologies and architectural ideas.

Design principles

No bloated JS framework

The whole frontend is rendered on server side using Thymeleaf. The page is only gradually enhanced using JavaScript, following the ideas of progressive enhancement and the ROCA principles.

Mobile first

The application is intended to be usable on mobile with the same comfort as on desktop. We're using bulma.io as the main responsive CSS framework.

Mobile first also means to take limited bandwidth and computing power of clients into account. We thrive to send as little data and JavaScript as possible to save on both. Additionally we use aggressive caching of all static or rarely changing resources.

No external resources

All resources that are required by the frontend for being rendered shall be delivered by our own server. We do not want to expose users to third party trackers without them noticing. There are some features that obviously require third party resource access such as Login with Google. That's OK as long as the user is explicitly made aware of this fact.

No login or account required

Every core feature shall be usable without having to register or login through some third party provider. Logging in only provides some convenience features.

Domain Driven Design

There is no one way of doing DDD, but we do lend many ideas from the concepts of DDD:

  • The main business logic is implemented in a clean object oriented way
  • Heavy validation for preventing illegal states of domain objects
  • Loosely coupled feature implementations

Stand alone API

Though the REST API of the backend is currently not exposed to the public and only used internally by the client, its whole design is centered around the idea of also being used stand alone.

Continuous delivery

If it builds, it works

Every push to the master branch shall build the project and, on success, deploy the the result to production. The test suite must thus be comprehensive to provide maximum confidence that the whole application works as intended after it has been automatically deployed.

As we currently run on docker-compose its not easy to achieve actualy zero-downtime deployments. We do our best though to fake it for the user:

  • The proxy serves an update notification if it encounters a gateway timeout from the application
  • The frontent is built resilient enough to not crash with an error in case the backend application has not fully booted

cmp's People

Contributors

dependabot[bot] avatar fc-staddiken avatar skuzzle 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.