Skip to content

spacedrop/spacedrop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpaceDrop

An open-source CMS in JavaScript, built with Meteor and React.

Achievement unlocked, you found us.

Hands to you for Googling and finding us, the next step is up to you. Become a co-author and member of the die-hards controlling SpaceDrop's future direction, by forking and creating a PR that gets committed.

API examples

Below APIs are functional, more APIs are coming soon!

Menu API

Create route to view content of type node.

SD.Menu.route({
  path: 'node/:nid',
  component: SD.Views.Node,
  subscriptions: {
    'node.node': ['nid']
  }
})

Permission API

Create permission to access published content.

SD.Permission.permission({
  name: 'access content',
  title: 'View published content'
});

Create a role with limited permissions.

SD.Permission.role({
  name: 'guest',
  permissions: {
    'access content': 1
  }
});

Entity API

Create an entity of type "node".

let Node = class extends SD.Structure.Entity {
  constructor({ name, schema = {}, indexes = {} }) {
    super({
      type: 'node',
      bundle: name,
      schema: _.extend({
        nid: {
          type: Number,
          optional: true,
          autoValue: () => {
            return this.collection.find().count() + 1;
          }
        },
        bundle: {
          type: String,
          optional: true,
          autoValue: function() {
            return name;
          }
        },
        title: {
          type: String
        }
      }, schema)
    });

    // Ensure index for entity type node.
    Node._ensureIndex('nid', {unique: 1});
  }
}

// Export Node to packages and application.
SD.Structure.Node = Node;

Node API

Create a content type (bundle) with the name "page".

let Page = new SD.Structure.Node({
  name: 'page',
  schema: {
    body: {
      type: String
    }
  }
});

List all pages (nodes of content type "page").

let nodes = Page.find();

List all nodes regardless of content type (bundle).

let nodes = SD.Structure.Node.find();

Help improve these APIs! Fork and create a pull request, when it gets committed you'll be added as member of the die-hards and help decide the future for this project.

Sub-projects

  • Core
    • Logging system (inner logging, logs transmitted to external system)
    • Caching management and injection
      • Subscription caching
      • Appcache
    • Menu
      • Simplify the API to create and manage routes and access management for other packages.
      • UI for management of menus.
    • User
      • UI for management of users.
    • Permission
      • Access management for packages.
      • UI for roles and user permissions.
  • Theming
    • React Templates (Blaze inspired templating)
    • Sideburns (Blaze inspired events/helpers/callbacks)
    • Overriding templates
    • Basic theme (package)
  • Admin UI
    • Administrating site settings
    • Editing documents, forms generated from schemas in the Structure package.
    • Add/remove and publish/unpublish documents.
    • Packages overview (on/off capabilities)
    • Reports package and page showing status of current installed version and more.
    • Admin menu for all administrative tasks.
  • Configuration management
    • Structure
      • Creating collections
      • Manage schemas for collections
      • Manage indexes for a collection
    • Structure UI
      • UI for adding/removing collections
      • UI for adding/removing fields on a collections
    • Structure from UI to code
      • Structures should generate code from the UI if running locally.
      • Structures should be readable from production, but not editable on a published application.
  • SEO
    • Pagetitle
    • Metatags
    • Open Graph
    • Schema.Org
    • Rich Snippets v2
    • SEO package
      • UI for editing SEO defaults or per entity
  • API
    • REST api to list/create collections, schemas etc.
    • REST api for read/write to documents in a collection.
    • CSV importer.
    • CSV exporter.
  • Documentation
    • JSDoc on all packages/components/classes generated to a docs site.
    • Manuals for all API's such as Menu, Permission, Structure, etc.
    • Documentation how to create a new app using a distribution (Distributions are ready sets of SpaceDrop packages one can get started using direcly).
  • Security
    • Argument checks
    • Browser policy
    • Rate limiting for preventing flooding
  • Asset management system
    • Media library for static files
    • Images (PNG, JPEG, WebP) with server side optimization (resolutions, metadata removal, conversions) and client side edition.
    • SVG with client side edition
    • MPEG-4 with server side entropy recompression and optimization (resolutions, conversions).
    • External asset importer for Youtube
  • Features as packages
    • Browser outdated warning
    • Cookie information
    • Legal information
    • Favicons with manifests and screen launching for mobiles
    • Search engine (full text search as default, external river for Elasticsearch)
    • Basic recommender engine
    • Analytics (GA, Mixpanel, ...).
    • Transactional emails (SMTP, Mailjet, Mandrill, ...) with client side edition (tagging, theming)
    • PDF generation for catalogues, license agreement, ...
    • Payment capabilities (Braintree, Stripe, ...)
    • A/B testing (rendering depending on population, reports on funnels, ...)
    • Sharers for social networks
    • UTM campaigns
    • Ads / Banners
    • Rocket.Chat integration with bots for outside hours
    • Maps integration with styling
  • System health support
    • Client information on connection status
    • Server status
    • Simple analytic dashboard (CPU consumption, RAM, Drive)
  • Devops - Assistance and helpers for deployment
    • Docker based infrastructure for monolithic applications
    • Docker based infrastructure for clustered applications
    • Cordova project for iOS, Android and Android legacy (with Crosswalk integration)
  • Internationalization
    • Simple translation support for packages.
    • UI for translating strings
    • UI to update translations from external sources, i.e. https://localize.drupal.org/

About

An open-source CMS in JavaScript, built with Meteor and React.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published