Git Product home page Git Product logo

flintcms's Introduction

FlintCMS is no longer under active development.

You can still use it as-is, but there won't be any feature or security changes. Have a nice day! β˜€οΈ


FlintCMS Β· npm version Build Status PRs Welcome Codecov

Flint is a CMS built to be easy to use and super flexible. Your content needs to fit into more layouts and environments than anyone but you can plan for, so Flint enables you to make the templates you need and fill it with your content.

It's a CMS that is built for those who want to fully design the front-end of their website without wanting to deal with static site generators or older content management systems (that are slow and use outdated technology).

Why?

Every content management system falls into one of two categories: can be customized a ton but is very cumbersome to work with, or can be customized too little but is very straightforward. Only a few seem to find that perfect balance; CraftCMS, which Flint is ultimately inspired by, is a great example. However, there are very few systems that take advantage of the performance and ecosystem of Node.js. Flint is really fast and is written using modern web standards so that newer developers can jump in, plus it's open source so more and more people can help make it better.

Getting Started

npm install flintcms --save

Then the entry point to your app:

const Flint = require('flintcms');

const siteConfig = {
  siteName: 'My Awesome Flint Site',
};

const flintServer = new Flint(siteConfig);

flintServer.startServer();

That's the basics! There's more to it than that, you can take a look at the docs to learn more.

Requirements

FlintCMS employs new Node.js standards and functionality, so ^8.0.0 is the supported version.

You'll need a MongoDB database of some kind, and you'll likely want a way to send emails through your site; you can read more about all of this on the FlintCMS docs.

Building with Flint?

If you're using FlintCMS in a project, thats awesome and I want to know! Feel free to open up an issue to let me know, and I'd be happy to list your project in this README.

Contributing

Thanks for your intesting in contributing to FlintCMS πŸ’– There are some things you need to know about how to contribute well, you can read about it in the CONTRIBUTING file.

flintcms's People

Contributors

jasonetco avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

flintcms's Issues

Search

An endpoint to search for entries or pages whose title contains a string. Eventually, when tags are added, it will also search for entries with a given tag.

Database migrations and data import/export

I'm not too familiar with MongoDB, though I've enjoed using database migrations and seeding that is available in frameworks, such as Laravel.

I'm wondering how to migrate/import/export database/collections to/from MongoDB, in order to keep the project consistent between environments? Is there some sort of hidden magic, or JSON exporter/importer tool (given that Mongo is a BSON)?

How do you guys recommend approaching this? With SQL it's fairly easy, create a dump and reimport it to another env.

Support CSS bundle cache busting

Find a way of enabling an option to add a hash to the compiled CSS bundle to allow for cache busting. This can be done fairly easily by timestamp when the bundle is compiled, then stored in a global variable and added to the collectData's flint object. So you would use it like:

<link rel="stylesheet" href="{{ flint.cssBundle }}">

It could also store the hash in the database's Site document.

It would also be cool to compare the bundle that already exists before overwriting it, to see if the hash needs to be updated. This would prevent unnecessary cache updates.

🎨 Design empty content states

Design the empty state for the various pages that have content. Example, when a user opens their Flint site for the first time the dashboard's homepage should have a more inviting design that illustrates the best next steps.

  • Home
  • Sections
  • Entries
  • Assets
  • Fields
  • Pages

Improve Logging

Create a log file that is auto-updated when any mutation succeeds or fails, then create a view for this log file in the admin dashboard.

Necessary information:

  • Timestamps
  • Location of error (if appropriate)
  • User that was logged in at the time

Multilingual

Hey, great initiative.

Love the ideas, inspiration and execution of the project. I was wondering since multilingual is baked into CraftCMS, if it was a planned feature for Flint as well.

Thank you!
Oz

Flint is awesome.

Just wanted to say this is a killer start on something that I've been wanting to work on / use for a long time. Craft is great for organizing content so it is a great inspiration for a Node based CMS. There is a huge void that Flint could fill. I can't stand PHP anymore.

Looking forward to contributing where I can. Looks like you haven't made any commits in a while. Do you plan on continuing to work on Flint?

Also, I couldn't figure out how to add a new admin account from the docs. After reviewing the source I found the post route to add a new admin and did it from Curl.

I'm a Designer/Art director by day with a programming background so I can help with UX and design work as well.

Write documentation

Getting Started

  • Introduction
  • Installation
  • Site Configuration
  • Directory Structure
  • System Requirements

Core Concepts

  • Users
  • Pages
  • Sections
  • Fields
  • Group Field
  • Entries
  • Assets
  • UserGroups

Templating

  • Entry Model
  • Section Model
  • Asset Model
  • Site Model
  • Field Model
  • User Model
  • UserGroup Model
  • Page Model

Plugins

  • Overview
  • Hooks & Events
  • Module Structure

Deployment

  • Heroku

Global Fields

One thing that I'm missing from Flint with regards to its main source of inspiration is the ability to define global fields that will be available throughout the entire website.

These fields could be used for variety of things, but most importantly to define stuff like metadata (which could be overridden with page-/entry-specific fields in the template logic) and other bits of info.

@JasonEtco what are your thoughts on this? How feasible do you think that could be? I'm no good with React, so I doubt I'd be able to write this functionality myself, unless there's a way to leverage the plugins subsystem without dabbling into React?

node index.js in my command line returns nothing

Hi,

I just wanted to say that I love the idea behind flintcms. I've just installed it and I'm trying to run the example code:

const Flint = require('flintcms');

const flintServer = new Flint({
  siteName: 'My Amazing Flint Site!'
});

flintServer.startServer();

But it's not working. I get returned to the command line without any errors, nothing in the log.

Any ideas?

I'm running Mac Sierra 10.12.6
Node v9.6.1
npm v5.6.0

Dropdown field is breaking

The Dropdown field is throwing an error:

TypeError: sorted is undefined [index.js:50]

That's components/Fields/Dropdown/index.js.

Onboarding modal/page

Currently, when a new server starts up, the user is just thrown into it. An onboarding modal/page would be a good way of instructing people what the first steps are (make field, make a page/section, make an entry).

Security issue

Hello,

As a member of theΒ Node.js Security WG
I would like to draw your attention to a security report that has been made regarding this issue.

I have made attempts to contact the person identified as a maintainer of this package but did not get any answer. What is the best way to reach someone with commit rights over this repo and hopefully npm publishing rights as well, in order to invite them to privately discuss the issue on the HackerOne platform and provide a resolution?

Thanks,
Liran.

References:

Dynamic routes for sections/entries

Currently, the only available URL route for an entry is /:sectionSlug/:entrySlug, which is pretty lame. The route for all entries in a section should be configurable in the section. In the catch-all route currently used for pages, we can also evaluate to route to an entry.

Tags

A new feature, the ability to add "Tags" to entries. This will be a way of organizing entries within the same section on a more granular level, and will enable more broad searches.

DatePicker component not working as page field

Looking into this one it seems that the date is saving as a string when being used as a page field. But the picker works fine in the aside when it is supplied a proper date date from the DB.

I can get it to work by changing the value def in the DatePicker constructor() to:
const value = (props.defaultValue ? new Date(props.defaultValue).getTime() : props.value);
But I think this is more of a hack than a fix. You probably have a better idea how to normalize the data the field is receiving.

Rich Text background is transparent

The Rich Text field's background of both the editor and the toolbar is transparent instead of white. This becomes an issue when a Rich Text field is within a Group field - Group fields blocks are contained in a grey box, which shows through the Rich Text field.

Error on install flintcms

Hello Guys,
I've installed flint following https://flintcms.co/docs/installation/ but once i run node index.js somre errors displays:

(node:20789) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'error' of undefined
at missingEnvVariables.forEach.v (/home/antonio/Scrivania/experiments/flintpractice/node_modules/flintcms/server/utils/validate-env-variables.js:14:40)
at Array.forEach ()
at validateEnvVariables (/home/antonio/Scrivania/experiments/flintpractice/node_modules/flintcms/server/utils/validate-env-variables.js:14:23)
at Flint.startServer (/home/antonio/Scrivania/experiments/flintpractice/node_modules/flintcms/index.js:93:33)
at Object. (/home/antonio/Scrivania/experiments/flintpractice/index.js:7:13)
at Module._compile (internal/modules/cjs/loader.js:678:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:689:10)
at Module.load (internal/modules/cjs/loader.js:589:32)
at tryModuleLoad (internal/modules/cjs/loader.js:528:12)
at Function.Module._load (internal/modules/cjs/loader.js:520:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:719:10)
at startup (internal/bootstrap/node.js:228:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:575:3)
(node:20789) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:20789) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
I'm the only who get this error?
Thanks

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.