Skip to content

Instantly share code, notes, and snippets.

@ijy
Last active December 27, 2015 07:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ijy/7292821 to your computer and use it in GitHub Desktop.
Save ijy/7292821 to your computer and use it in GitHub Desktop.
A list of core characteristics for Symphony Next from varying user roles and perspectives.

Symphony Next - Core Characteristics

A list of requirements for Symphony Next from differing user roles and perspectives.

Roles & Perspectives:

  • Content publisher: User of the system. Front-line of the operation responsible for publishing/editing content on a regular basis. Isn't concerned with anything else other than what is required to do their job well.
  • Content Manager: User of the system. Manages content publishers with more control of the overall system and more permissive user permissions.
  • Website Builder (evaluating): Site developer/designer. Looking for a CMS/platform to use as the basis for their web work but needs to make a choice which will be a good fit for a number of projects of varying sizes for the foreseable future.
  • Website Builder (building a system): Site developer/designer. Will most likely work primarily via the GUI in building the website but may or may not have other developent skills.
  • Website Engineer: From more of a software engineering background with preferences for working in code rather than a GUI. Is concerned with a solid foundation to extend and adapt for web site and application development.

As a content publisher I want:

  • Intuitive Interface
    • Easy to use with a low learning curve
  • Clean & Clear UI
    • Minimal distractions
    • Focused on what I want/need to publish
    • Shows me only the fields I need to fill in and nothing more
    • Help/Hints when I need it
  • Adaptable Interface
    • Works on my smartphone, tablet, or desktop computer
  • Easy linking to files/images/documents
  • Drafts (save for later)
  • Preview
  • Versioning (mistakes happen)
  • A publishing hub
    • Publish site news/blog
    • Publish to twitter/facebook/social media
    • Publish a monthly email newsletter

As a content manager I want:

  • User groups & permissions for various staff members
  • Publishing approval process
  • Easy page creation/editing
    • Hierarchy can also be re-structured easily.
  • Dashboard & activity listing/reports
    • At a glance view of activity.
    • Publishing approval requests.
    • Basic visitor numbers & popularity information.

As a website builder (evaluting a system) I want:

  • Flexibility
    • To build whatever the job dictates
    • To build both small sites and large
    • To build website applications and endpoints
  • Re-use
    • A system I can re-use for several (all) of my website projects
    • Re-use of sub-skills such as template language, underlying framework, data transport mechanisms, and knowledge gained whilst working with the system.
  • Extension
    • The ability to extend the system where my requirements go beyond what the core offers
    • An high quality extension library with ready-made extensions which I can use to speed up development and use as a starting point for some of my own custom extensions
    • An easy way to search the extension library
    • Peace of mind knowing that extensions are well maintained and will work with the latest version of the core.
  • Documentation
    • A well documented system with plenty of examples to get me up and running quickly
    • A place of reference for quick look-ups whilst in development
    • Extension documentation which can walk me through building my own extensions
  • Ecosystem
    • An active & friendly community who I can turn to for advice & help with problems as and when they arise
    • Educational resources and articles I can refer to
  • Modern Development
    • A system which follows modern development workflows and best practices.
    • A system which allows me to use my own tools for development including things such as Sass/LESS/Stylus, JavaScript libraries, and build tools.
    • A system where the skills I learn can be re-applied elsewhere making effective use of my time.
  • Unopinionated
    • I want to create the front-end templates without constraint or limitations imposed.
    • The choice of template languages to fit in with my workflow.
  • Easy Sell
    • Something I can sell to my clients very easily and to tempt them away from WordPress.
    • Something that makes me look good to my boss for suggesting it over WordPress.
    • Something I can convince colleagues and co-workers to learn and work with.
  • Popularity (Social approval)
    • Reassurance knowing that it's used by a lot of people to build a lot of cool things - they can't all be wrong.
    • Reassurance that it has a strong future and will be around for many years to come. I wont be wasting my time learning these skills.
    • Pride in knowing I'm using one of the cool web tools in hot demand.
    • Comfort knowing that there are plenty of jobs requiring skills in this system. I can enhance my career by moving in this direction

** As a website builder (building a system) I want:**

  • Content Modelling
    • The flexibility to define my own content resources (sections) and associated fields.
    • The ability to set and define relationships between resources.
    • The ability to re-use content of a potentially global nature (i.e. addresses, contact details, etc)
  • Flexible Layouts
    • To shape the publish page for usability and intuitiveness.
    • The ability to re-use layouts so I don't have to set it up for each every content type.
    • Adaptable layouts (responsive by nature).
  • Adaptable Storage
    • The choice of RDMS or NoSQL or no DB at all (flat file template serving and basic routing)
  • URL Architecture
    • Full control of the URL schema
    • An easy way to group routes if certain actions need to happen such as authentication
    • An easy way to assign route segments/variables
    • Error handling to serve up the correct response if there is a problem (e.g. 404)
  • Page Hierarchy
    • An easy way to provide a one-to-one mapping of content to a 'page' if the client insists (old dog and new tricks don't always mix)
    • A visual tree view to present to the client for familiarity and page organisation
    • Drag & drop re-ordering with URLs to adjust accordingly
    • Easy child creation/removal from the tree hierarchy
  • Assets Management
    • A place to manage files and images
    • Basic organisation tools with the option to extend.
  • Customisation
    • The ability to modify styling or theme my own control panel
    • The ability to define my own admin/control panel URL
    • A minor level of branding to include a logo/company name with links back to my company site for help.
  • Extension
    • An easy way to extend the system with my own re-usable addons
    • An easy way to manage my extensions and keep them up to date (extension/package manager)

As a website engineer I want

  • RESTful Architecture
    • Resource based (Sections).
    • Follows a resourceful URI pattern.
    • Accepts & responds to HTTP verbs (GET, POST, PUT, DELETE).
    • Easy data input from remote requests (API calls).
    • Easy data input from flat files (.md, .txt).
    • Easy data output in the form of XML, JSON, serialised PHP, or CSV.
  • Choice of Data Storage
    • Can use RDMS or NoSQL (local & remote).
    • Can work with no DB at all (handles route requests and static templates).
  • Modular
    • Lean core.
    • Extension based.
    • Extension Management.
  • Extension
    • The ability to extend the core system easily.
    • Extension development documentation.
    • Follows modern development best practices.
    • Allows me to use skills from my favourite framework or re-use skills learnt with another framework.
    • Use of an ORM
    • Fully testable
  • API
    • A full API with full CRUD operations.
    • Well documented.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment