storyden

package module
v0.0.0-...-8495beb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 20, 2022 License: MPL-2.0 Imports: 3 Imported by: 0

README

a modern community platform

With a fresh new take on traditional bulletin board web forum software, Storyden is a modern, secure and extensible platform for building communities.


Storyden monorepo

Storyden is structured as a monorepo with backend, frontend, database migrations, email templates, etc. all tracked together.

This project is a very early work in progress and not usable yet. If you'd like to help with some research, please fill in this tiny form:

https://airtable.com/shrLY0jDp9CuXPB2X

Backend

The backend codebase is written in Go and is fully cross-platform (does not depend on any platform-specific libraries or C code).

The codebase follows idiomatic Go guidelines with a sprinkling of DDD. Interfaces are preferred as a means of sharing functionality in order to facilitate easier mocking and testing.

There are three layers with a unidirectional dependency rule.

  • transports: the application interface layer.
  • services: the business logic domain.
  • resources: the persistence abstraction layer.

Code in the transports layer depends on code in the service layer which depends on code in the resources layer, never the other way around.

Transport Layer: HTTP

The HTTP transport layer uses OpenAPI to generate the underlying server and data validation code. This is then wired up to the service layer using "bindings" in the transport layer.

Persistence Layer: SQL and Ent

The database code is generated by Ent. Migrations are managed via generated SQL files using Atlas.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
app
services/authentication/provider/oauth/all
Package all contains things that are common amongst all providers.
Package all contains things that are common amongst all providers.
services/post
Package post provides APIs for managing posts within a thread.
Package post provides APIs for managing posts within a thread.
services/thread
Package thread provides APIs for working with threads which are sequences of posts.
Package thread provides APIs for working with threads which are sequences of posts.
transports
Package transport contains all the transport layers that facilitate interfacing with the application.
Package transport contains all the transport layers that facilitate interfacing with the application.
transports/openapi
Package openapi provides a transport layer using HTTP.
Package openapi provides a transport layer using HTTP.
transports/openapi/bindings
Package bindings is responsible for providing a bridge between the code that is generated from the OpenAPI specification that comprises the "Transport" layer and the code that implements the product, or the "Service" layer.
Package bindings is responsible for providing a bridge between the code that is generated from the OpenAPI specification that comprises the "Transport" layer and the code that implements the product, or the "Service" layer.
transports/openapi/openapi
Package openapi provides primitives to interact with the openapi HTTP API.
Package openapi provides primitives to interact with the openapi HTTP API.
cmd
internal
errtag
Package errtag facilitates tagging error chains with distinct categories.
Package errtag facilitates tagging error chains with distinct categories.
glue
Package glue contains miscellaneous utilities for the OpenAPI bindings layer.
Package glue contains miscellaneous utilities for the OpenAPI bindings layer.
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL