Giter Site home page Giter Site logo

j0bz's Introduction

This is one of the product ideas I wanted to explore (a job board), but more importantly, to explore some architecture ideas I've had. Domain_Action_driven_architecture

The idea is - as I understand - a mix between hexagonal and domain-driven architectures.

Entities & Actions - aka the Domain

The two most important constructs: entities and actions. An entity is a business concept, like an account, a bank card, or a doorknob if that's the product of the company.

Actions are what the business usually have to/want to do with entities. Like open an account, register a bank card, or prepare an invoice for a doorknob.

The only restraint this domain should have is the language itself, it shouldn't care about the DB you're using (if any!), or whether your application is a web application, a mainframe program, or whatever.

Adapters

Then there comes repositories, which should give you a basic CRUD interface over entities. In here you inject a kind of object that will manage persistence, like a class instance who knows how to speak with the database, or read/write from CSV.

Renderers

Finally there are renderers, which are web frameworks, terminal applications, whatever. At this stage you'll need to worry about problems specific to the application's type (think of authentication in webapps for example). Other than these, this layer should mostly be configuration, like setting up a route to a perform a certain domain action.

Lessons learned

This was a fun exercise, and I definitely see value in this approach, it's very lean, and uses very few dependencies compared to other solutions - BUT Django (to remain in the Python realm) beats this in terms of productivity and time to launch, while still offering this architecture as an evolutionary next step once the product is deemed profitable, and needs to separate domain specific actions/events from the framework.

j0bz's People

Contributors

duck-nukem avatar

Watchers

 avatar  avatar

j0bz's Issues

Setup CD

  • On main update deploys a new version to a production environment

Optional

  • Create a simple automated way of bringing up new environments

Fix docker setup

  • Make Docker image buildable and runnable in production
  • Make Docker image buildable and runnable during development
  • Make Docker image work with the IDE (run & tests)

Managing job posts

Prerequisites

Requirements

  • Can be posted by a registered employer
  • Can be edited and/or deleted by OP
  • Can be viewed by anyone using the URL
  • Has a paginated list page to show all posts
  • Links to employer profile page
  • Anyone should be able to apply (via a mailto: link)

Sections:

  • Job title
  • Salary (range, or concrete value)
  • Location
  • Part-time type (fixed term contract, 6/4 hours, 4 days a week, etc)
  • Requirements
  • About the job/company
  • Interview process
  • Benefits

Explore “volunteer” roles

As a dev/sales/etc I'm looking for something new.

Idea is that people with free time can come together to hack something together.

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.