Headless ecommerce architecture with flexible RBAC - content-management-system

I'm creating a software marketplace web app, and looking for some insights and suggestions about the architecture.
I would like to be owner of the UI, so probably a headless approach is the way to go.
The basic requirements contains:
I need to have multiple external identity providers (custom sites, not like facebook or google)
I need to have at least three roles
simple users who can buy stuff
users who can upload things available for sale in the marketplace
administrators, who has to approve everything that is uploaded to the marketplace
Do modern ecommerce platforms allow limiting certain API-s based on custom user's roles? Or allow registering custom external identity providers?
If not, would it be a viable option to put the ecommerce API behind one of my own microservices and do RBAC in one of my on MS?
I generally would like to do most of the customizations of the ecommerce externally, in my own microservices, instead of within the ecommerce platform itself - so I'm not bound to any specific language or technology. I would like to host the site myself, in a containerized environment.
Additionally, any suggestions about a platform that would fit the use case mentioned above?

Related

Online app backend with client-friendly online CMS

There are a ton of online CMS services out there. And a ton of (new) backend-as-a-service products too. But I can't seem to find what I am looking for.
I am building an app for a client. The app contains data about shops, products, and more. The client must be able to update this data (and not just one person: each shop manager needs to be able to log in and edit the data for their own shop). And of course the app must be able to access this data.
Client edits data online
This has to be extremely user-friendly and completely online. I don't want to sell my client something where they need to install stuff on their server. I don't want to sell them something that's accessible online but looks like phpMyAdmin.
I want a shop owner to be able to go to a webpage, log in, and then see a pretty UI where they can edit the data for their shop. The back-end needs to have a pretty front-end that's auto-generated for whatever data this particular shop owner is allowed to edit.
So there are two bits: storing data in the cloud in such a way that it can be accessed by the app (which I am building with Titanium), and allowing the client to log into the backend and edit the data in a non-tech, user-friendly way.
Here's a list of things I tried...
Backend-as-a-service
Services with a great back-end, but without easy auto-generated data editing website:
Appcelerator (Titanium) Cloud Service
Amazon EC2
Stackmob
BackBeam
WebVanta
Parse
API o Mat
ShepHertz Cloud42
Kii
Online CMS
Services that provide a nice way for clients to edit data, but no easy way for apps to connect:
CloudCMS
(and many others I'm sure)
It's insane that no-one seems to be providing the cross-breed of BaaS and online CMS. So many people are building apps for clients, and so many clients are not tech-savvy and are reluctant to get a special server and host database software they don't understand. Why does this not exist? What am I missing?
With apiOmat it's easy to create your own data-editing app for e.g. with JavaScript SDK and HTML. Or you send a feature request so that they build a module for your preferred CMS.
As you mentioned, Cloud CMS is a really good option (disclaimer: I'm one of the founders). The product provides an enterprise content management backend and an API that lets you plug in some really powerful features right into your mobile apps.
This month, we released a brand new user interface which provides much of what you're asking about. Instant forms, document libraries, search and workflow all in one place.
You can check out Cloud CMS here: http://www.cloudcms.com
I completely agree with your assessment particularly with respect to the last mile (getting the final app built). It's kind of the wild west out there and the strong technologies are still proving out.
You mentioned Titanium - that's a good choice. I also quite like the Ionic Framework (http://www.drifty.com/). It's a step in the right direction.

Creating an SaaS application that automates signup?

I'm looking for some guidance on my research to building an SaaS. This thread seems to be related, but I'm wondering if this software Rackspace has called rBuilder is what I would be looking for to automate the process of creating an instance of the software with a unique IP address and domain name.
Also, for an application similar to Shopify, does the application work like Facebook where it serves up different information based on the account, or is it better to have separate installs of the software like WordPress, but on a server that you maintain?
IMHO, there are various levels of Multi-tenancy [level1 through level4], among them, the purest form of multi-tenancy [Level4] is to have a single code base to cater to the needs of different customers [tenant's].
In this case, you will be required to maintain all of the configuration metadata within your code base to ensure that each tenant has the capability to customize the application the way they wanted to.
Having a single codebase is very clean, easier to maintain, easy to patch, easy to onboard new customers etc...
Hence, kindly note that you have to decide on the time and expense that you have budgeted for the application that you have planned to as the purest form of multi-tenancy does require some more additional thought process.
You can consult some articles like this and also google on the pros and con's of having the purest form of multi-tenancy vs on-premise model or virtualized model of multi-tenancy.
Also read more from here

Cloud Content Management Systems

In search of a 'Cloud Content Management System' like http://osmek.com/,
I could not find a single other CCMS that does what I want it to do :)
Basically, what I need is content management without a website frontend attached.
Just basic storage of data, documents, images, etc. etc. with a simple API to access, like Osmek. Just NoSQL or SQL based services won't do, because there can be images or documents attached. And, ofcourse, I'd like to have a backend to manage the data (like a typical CMS does) without writing a backend myself (if it's just the service)
Osmek is great, and it works most awesome in conjunction with Actionscript 3, but I'm just looking / searching for alternatives (if there even are any yet).
I need this form of hosted content management for content-manageing a mobile application.
So the question is: Is there anything else out there that does the same as osmek that you know of? OR, how do you manage application specific content?
Thanks!
I'd encourage you to take a look at Cloud CMS (http://www.cloudcms.com).
Cloud CMS is a JSON content management (CMS) platform built on top of MongoDB with a REST API and drivers for a variety of languages. You just drop in a driver and call methods to query, create, update and delete content.
The platform provides everything you need to power the back-end for mobile and HTML5 applications - from managing your content to managing users and groups, credentials, security tokens (OAuth2), Git-like collaborative workspaces, real-time analytics, activities, data transformations and more.
Everything runs in the cloud on an elastic back-end. It's probably more akin to Parse than a traditional CMS. You just make calls to the APIs. We keep the costs low by letting you only pay for what you use (almost like a utility). You just pay for storage and data transfer.
Disclaimer: I'm one of the founders of Cloud CMS. So I'm a pretty lousy reference in terms of its objective value. However, a couple of us worked at traditional "ECM" companies in the past and we think we've built something that puts a genuine beating on those guys.

Choosing a Portal / CMS software for developing multi brand websites?

We are in the early stage of overhauling a multi-brand website built using a custom developed java mvc framework to enable web 2.0 features. Built-in features we are looking at are: i18n, sso, content search and indexing, personalization, mashup support, ajax support, rich media content storage and management support, friendly to search engine optimizations, bookmarkable URLs, support for social networking sites, support for page composition and decoration using templates.
A combination of these features are supported by many portal and cms software.
Any insights will be very helpful in using a portal/cms combination to address this requirements!
This is a follow-up on this post focusing on the portal/cms angle
we are developing the same sort of thing, we are using Umbraco, open source, by far the best opensource we have come across
Joomla comes to mind. The ability to skin and implement templates is a core strength of the product. You can create channels of content as well as enable varying levels of user customization via roles.
Another nice feature is that you can export your changes to your template. that way you can port your changes easily from QA to a customer site.
Finally, there is a very active community of extension developers with customizations, as well as numerous template designers.
If you require a Portal that does integrate with your CRM such as Salesforce and yet allows you to build a Mobile-Optimized branded portal for Customers, Partners or any other groups of users you can check out Magentrix:
www.magentrix.com

How can I centralize an entire website engine?

Prefer responses via php or ROR if possible!
Example:
The slide widget at www.slide.com can
be deployed anywhere on the web. But
the slide developers have
centralized edit capabilities to these
widgets. A change to the widget core,
will update across all installed
widgets.
Can this be done with an entire website engine?
Say I coded the Wordpress
engine. Is it possible for me to
deploy my engine on my customers own
servers at their own domain while
still being able to
control/update/edit the core and have
it update all my clients engines.
The main reason is for clients to have ownership of their content and brand. A customer may need to establish his online presence and so he needs his own domain, but he still can pay a service to have his engine professionally managed and upkept.
As far as I can tell the flash objects in the slide.com widgets are hosted on their servers, all that is deployed elsewhere is markup that references the widget similar to embedding a YouTube video. Unless there's something there that I don't see.
There are 2 ways you could do what I think you're asking.
1) You could provide a service that hosts the web application on your servers. The user could point their domain to your server and you would run the application under a virtual host and give them administrator access to the application to brand it. Essentially you would be providing a web hosting service with the application engine pre-installed.
2) You could allow them to deploy it on their servers and provide automatic updates that would download and replace the application files when they are changed in the core. However this would require script write access to every folder where scripts are stored, so it would pose security problems on their server.
Depending on the type of application you could also have much of it deployed as services on your servers, and some type of basic wrapper that is deployed on the customers servers that communicates with your services. You could then centralize all of the business logic and have images and templates and such stored on their servers, and possibly scripts that communicate with their database.