-
Notifications
You must be signed in to change notification settings - Fork 2
Server ToDo
BobDickinson edited this page Apr 23, 2014
·
5 revisions
- Need ability to create account, login to that account
- Accounts need to be able to collaborate on projects (invite, join, admins to manage, etc)
- Apps under projects? Master account? Need some kind of organizing structure.
- Roles / permission (for example, only some people can edit and check-in code, only some people can deploy, see logs/metrics, etc)
- Need to publish Wiki to web site
- Use marked [https://github.com/chjj/marked] to process markdown
- Use highlight.js [http://highlightjs.org/] for code formatting/beautification
- Look at Dillinger - example of using Node/marked/Bootstrap together
- Process isolation for apps (sep process required?, just context?, stubbing of globals?, custom require/loader?)
- Custom node_modules support (assuming no native code)?
- Each app may have multiple targets (john-sandbox, test, staging, production, etc)
- How do version control branches factor in to this?
- Ability to spin up individual app sandbox for testing
- Server -> App -> Target (default target is production)
- Possibly use notation:
appName
for default orappName{target}
for a specific target - Refer to server/appName/target as "endpoint"?
- Working now, will need cluster IPC mechanism (pub/sub?) for clustering
- Disable editing/saving of non-user modules
- Decide whether to allow edit/save of user modules during debug, implement
- Move breakpoints as user edits (to maintain position)
- Store breakpoints in session state so they can be set/seen when not debugging
- Implement module new/delete
- Full version control (diff, change tracking, integration, rollback, etc)
- Page or entire branch
- Because all dev is online, need to maintain "local" changes on server (is this a "branch"?)
- Deploy from one target to another, for example: staging->production
- Revert / roll-back
- Probably tight integration with source control
- App modules expose unit tests
- Test running in dev environment
- Automated testing on check-in and/or deployment (or by policy)
- Model fixtures/mock support (more explicit view-model/model separation?)
- Would be cool to have a web client (Knockout.JS style), which could also be used for UX test
- Provide client with logging APIs
- Integrate into debugger console
- Log viewing / log management tools?
- Some mechanism to share static values between Maaas user modules
- Perhaps more sophisticated, like template fragments?
- Styles? - a set of attributes to be applied to a control, or all applicable descendant controls?
- Primarily images (what else?)
- Provide facility for uploading/managing application assets
- At runtime, select proper asset instance based on locale and/or client metrics (including resolution/scale)
- Provide simple mechanism to maintain localized resources (strings, string templates, images)
- Use locale reported from client when mapping
- Look at how Adobe does this
- User selects an app target
- User supplies details (app name, etc) and resources (icons, splash screens, etc)
- User optionally specifies capabilities (network access, location services, etc)
- Client builder produces built images for download
- Option to sign as Maaas.io or prepare to be signed by client (any way to sign as client or streamline this?)
- As needed based on observed performance
- View template cache (per-request, web-like, or we could manage more state on the server to be predictive)
- View templates are pretty small, and minimum round trip latency is probably the biggest cost
- Caching might make more sense for assets (images, videos)
- Session is per client + server/app (server/app{target}?)
- Session data should be persistent
- Client will store session-id (that's all the local state they will have)
- Session data access needs to be fast (table storage, if needed, fronted by cache service)
- Session data writes need to be fast (if needed, can use objectmon to determine if any diffs before writing)
- Possible solutions: Redis, Azure cache + table
- Maaas branded, available in app stores
- Maaas welcome screen, list of previously used Maaas apps
- Would be nice to have per-Maaas-app icons to show, along with other details
- Ability to add new Maaas app (defined by server, appName, branch (optional), PIN?)
- When adding new Maaas app, verify with server and get details (description, icon maybe)
- Ability to remove Maaas app from list
- Select Maaas app to launch it
- If app times-out or dies, return to launcher. Other mechanism to force return (won't be any app nav)?