Template for Request for Proposal, Requirements & Design Specifications
Been cloning this document for so long, so many times…
[Title]
Synopsis
[One sentence description of what's this all about. TL;DR.]
Changelog
[Reverse chronologically]
2014-07-21: launched — forty five years ago.
Table of Contents
[Auto-generated!]
Project
[Software development lifecycle (SDLC).]
Scope
[Extent and limitations of project.]
- Analysis and design [RFPs (written by clients) typically useless, thus my requirements and design specifications serves both as proposal and documentation, both marketing and engineering — keeps them honest!]
- Training: specify for which workflows, or code; documentations/materials to provide.
- Deployment: if out of scope, describe automation/scripting of deployment; probably Git based.
- Changes and maintenance: out of scope, retainer. Everything ends.
Schedule, Milestones
- Delivery, acceptance tests [period for corrections per spec, beyond which retainer applies]
- Payments schedule
- Availability, contacts
Legal
- Open source: the only viable technology, thus all our state of the art technologies are viral open source licensed, GNU/OSI compliant.
- IP transferred to client upon delivery.
Objectives
[Define "success".]
- Audience
- Marketing, growth hacking
- Goals
- Analytics, brand monitoring
- Ads
- Scalability
- Content [how much?]
- Traffic: web, email, read/write ratio…
- Expected scale changes
Principles
- Web standards (W3C)
- Valid and compatible code, official validators
- Usability and accessibility (a11y), WAI, ARIA
- Semantic Web: HTML5, XFN, RDFa…
- RIA: dynamic, realtime, SPA, async…
- Responsive web design
- Convensions, best practices
- Portability [understand app will not look and be experienced the same way everywhere, every time, by everyone!]
- Web 2.0
- Hyperlinked communities: blogrolls, trackbacks…
- User generated content (UGC) (ordered by increasing effort): ratings (votes), link sharing, comments/talkbacks, tagging, forums, blog entries (elsewhere), Wiki edits, multimedia.
- Mashups, syndication
- Active users: sharing, trust users
- Folksonomies
- Social networks (network effect): FB, LI, G+, Twitter…
- Global audience
- Perpetual beta
- Long tail, freemium, emergent user behavior…
- Bookmarklets, Greasemonkey
Clarifications
[Attach correspondence that clarifies specifications or its evolution.]
Architecture
Components
- Browser app (for people, as in UI/UX)
- Server app (for bots, as in SEO, APIs)
- Storage (no schema!)
- Daemon (and clusters, and…)
- [Optional] Hybrids, PhoneGap (aka Cordova)
Interfaces
Deployment
- Hosting
- Daemonizing, monitor/supervisor/watchdog
- Upstart, SysV init…
- Respawn, rate limit?
- Configuration
- Dependencies in package.json
- Environment
- Automation
- Installation (setup):
$ git clone (or unzip?); npm install; sudo service {webapp,pollster} start or pm2 start server.coffee
- Upgrade (release):
$ git push or pull (or rsync?); restart
- Installation (setup):
Technologies
- Node, Express
- Socket.IO (WebSockets)
- LevelDB
- DSLs: CoffeeScript, Stylus, CoffeeCup/Jade, Mustache…
- jQuery ecosystem: DataTables, Chosen…
- WebRTC (P2P)
- CSS: Flexbox
- Automation and asset pipeline: Cake…
Content
Screens, Blocks, Elements
[Screens: itemize visible, user facing features. Blocks: breakdown. Elements: leaf, atomic blocks, eg: widgets.]
Wireframes, Flows
Data Model
Semantic Web
Users
- Authentication
- Accounts
Admin
WYSIWYG, Media, Taxonomies…
UI/UX
Foundations
- Single page app (SPA)
- Responsive web design (RWD)
- Reactive, realtime
- WebFonts, SVG
- Usability and accessibility (a11y), WAI, ARIA
- Mobile…
Features, Widgets…
- DataTables (jQuery plugin): sortable, pick columns, reordering, widths, auto resize, ellipsis, filters, row selection, scrolling, colors, search, responsive features: wrap cells, wrap rows, swipe scroll, abbreviate values/labels, click/tap to expand, tooltips…
- Lifestream (aka feed): featured (aka sticky)…
- Menus: primary navigation, footer, related…
- Sliders (aka slideshow, carousel), accordion, lightbox…
- Dropdowns, popups
- Search: full text, AJAX, autocomplete, custom queries?
- Forms
- Modals?
- Breadcrumbs
Responsive
Mobile (ie Hand Held)
- Responsive (layouts)
- Touch, gestures, UI convensions
- Geolocation, cameras, etc
- Offline
- Push notifications
Style
- Graphic design
- Layout (composition)
- Logo (branding)
- Photos, drawings, animations…
- Favicon: 16x16 ico, transparency; optionally add large sizes with full alpha.
- Typography: use Webfonts (esp Google’s), maybe fallback on Cúfon. Readability.
- Color palette: mind accessibility/usability issues (contrast,blindness).
- Textures, embellishments…
- Style guide
Special Effects
i18n/L10n
SEO
Content
[Typically part of marketing campaign, copywriting…]
- Links (inbound)
- Metadata: fields provided by, eg, Yoast’s.
- Brand monitoring
Analytics
- Tracking
- Log analysis
Coding
- Metadata (RDFa, XFN, microformats…), sitemap, snippets (SEO)…
- Performance: compression, minification, combining, lazy loading, CDN… YSlow’s/PageSpeed recommendations.
SMO, Syndication
APIs
Quality of Service
Performance
- Latencies
Security
- Spam
Administration
Backups
Upgrades
Development
Staging
Locals
Repositories
QA/QC
--
The real world is a special case