Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extension System #4

Open
exastencil opened this issue Mar 16, 2024 · 0 comments
Open

Extension System #4

exastencil opened this issue Mar 16, 2024 · 0 comments
Assignees
Labels
core A core feature new Something that needs to be built from scratch
Milestone

Comments

@exastencil
Copy link
Owner

Different use cases calls for specific structures of projects. While Porous tries to cover a specific use-case well and does that by not trying to be everything, even in that use case there are choice to be made.

This is one of the core features needed to make Porous feasible.

Since Porous will try to include a lot of features to make them tightly integrated and easy to use, we need a way to opt out of some of them if you absolutely won't need them. There is also the issue of choices – do you want to use bootstrap, or tailwind, or picocss, or just a css processor like sass. Do you want to persist your data to flat files, or SQLite, or PostgreSQL, or DynamoDB? These should all be valid options, but introduce a ton of dependencies.

Ideally, a minimum viable application has server-side rendered components, with no client-side rendering, database, socket communication, authentication, etc. Just an app that serves pages and static assets. Those features should be turned on by default on new projects, but should be removable.

The way I'd like this to work is to have separate gems with additional functionality that can be required. The core gem will have a registry of these "extensions" which it will use at points where it needs them. For example, a porous/tailwind extension would render an additional <link rel="stylesheet"> in the Preamble, and start a watcher to generate that file when running the development server. This should all ideally be activated only by adding require 'porous/tailwind' somewhere.

@exastencil exastencil added this to the v1.0 milestone Mar 16, 2024
@exastencil exastencil added core A core feature new Something that needs to be built from scratch labels Mar 16, 2024
@exastencil exastencil self-assigned this Mar 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core A core feature new Something that needs to be built from scratch
Projects
None yet
Development

No branches or pull requests

1 participant