wiki:Projects/Advanced

Version 31 (modified by Dominic König, 11 years ago) ( diff )

--

Coding Projects

These are bigger projects that will require more effort and commitment to compel

Some things to keep in mind when working on these projects or planning new modules or major features:

  • Prepare a detailed Blue Print design to outline your design approach for the project
  • Engage with the Sahana Eden Mailing List to share your ideas and get input on the project (not everything is documented on the wiki - but if you are committed to working on a project the community can help point you in the right direction!)
  • Familiarise yourself with the Sahana Eden Framework and make use of it - no need to reinvent the wheel :)
  • Consider what other FOSS tools exist, that could be installed alongside Eden.
  • Look at tools and libraries already in use in Eden, e.g. jQuery and ExtJS for UI work.

NYC Sandy Recovery Site

See: Deployments/Sandy/Recovery

Dashboards

Focal Persons: Michael Howden, Fran Boon

Sahana Sunflower

Focal Persons: Michael Howden, Fran Boon

Continue the work from the Sahanathon to use Sahana as a Community Management Tool to:

  • Track volunteers
  • Manage tasks (potentially including bugs/feature requests)
  • Record Sahana Projects & Deployments

More details here:

Deployment Tools

Focal Persons: Fran Boon, ...

  • Fabric scripts to be able to deploy Eden
  • can extend https://github.com/lifeeth/spawn-eden
  • select physical servers &/or Amazon EC2 account (walk-through creating keys/certs, region(s))
  • select server roles distribution
  • select Database (MySQL or PostgreSQL/PostGIS)
  • select Webserver (Apache/mod_WSGI or Cherokee/uWSGI)
  • select Template
  • install all necessary/chosen components on the selected servers
  • add optional co-apps, such as GeoServer &/or OptaPlanner
  • optionally run Load Tests & then cleanup
  • add simple UI (e.g. web2py or Tk app)
  • this could then develop into a WebSetup app

Out-Of-The-Box Sahana Deployment

Focal Persons: Michael Howden, ...

  • Modules to Enable / Configure
    • Volunteer Management
    • Staff Management
    • Project Management
    • CMS (User Updates)
    • Request Management
  • Automate Test Scripts
  • UI
    • Re-design Homepage
    • Design Menu Hierarchy to match User Stories
    • Design Module Index Pages / Dashboards
    • Design/implement new theme (Using Bootstrap/JqueryUI?)

Mobile Interface

Focal Persons: Michael Howden, Graeme Foster, Fran Boon

  • Implement a responsive HTML interface for mobile devices.
    • Style standard CRUD + Search + Report
    • Possible options include Bootstrap, jQuery Mobile & Sencha
  • Represent Menus in a meaningful way for Mobile Devices

Translation Support

Focal Persons: Fran Boon

  • A translation module was developed for GSoC last year which is already in active use however it still suffers from many limitations:
  • Provide a set of admin scripts (perhaps run by git commit hook?) to update Pootle with any changed strings as a merge.

Workflow Support

Focal Persons: Graeme Foster

  • UI design to indicate steps in a workflow
  • Functionality to split the completely of large forms up into smaller steps (possibly using JS?)
  • Workflow Engine (probably beyond the scope of GSoC - actually I think this should be the primary scope of the project GF)

Focal Persons: Pat Tressel, Dominic König

  • Full Text Search
    • e.g. using Apache Lucene
    • Search uploaded documents (must follow authorization rules!)
  • Global Search
    • Over multiple resources (must follow authorization rules!)
    • Search box in the top right corner

Export Graphs

Export Graphs as Images.

Focal Person: Dominic König

We currently use the Flot JavaScript library to produce interactive graphs - primarily via the S3Report (/report, /report2) method:

We have 2 usecases for exporting graphs:

  1. A user would like to download the report they're seeing on screen as a PDF
  2. A user would like to download the report they're seeing on screen as an XLS
    • to have both the Pivot Table & associated Graph
  3. A user would like to subscribe to a report to receive by email daily/weekly/monthly

So, your task, as I see it, is to take the settings for a Report & produce the PDF &/or XLS version thereof.

We convert our internal S3XML data format to PDF or XLS using codecs:

I would focus on just one of these to keep scope feasible.

  • personally I'd be more interested in XLS as this gives users a more useful tool to explore the data than just a static PDF.

Options:

  • Use Flot to Export graphs
  • parallel matplotlib method (extend modules/s3chart.py)
  • server-side webkit browser to take a screenshot (ClimateDataPortal used this solution)

See Also

Optimization

Focal Persons: Dominic König

  • Performance enhancements to handle 10,000's of records
    • Server-side clustering of map features with different report-style aggregate representations
    • Optimize Report generation (probably beyond GSoC)
      • Data Warehouse? (Flattened tables structure, NoSQL)
      • Stored Procedures?

Rostering

Focal Persons: Dominic König

  • Staff/Volunteer Roster GUI
    • a prototype was done for GSoC 2012 which can be used as a point of reference - what was good about it? What was bad?
  • Development of/Integration with a wCSP engine for automatic rostering

Automatic Test Framework

Focal Persons: Michael Howden, Dominic König See:

Ideas

  • Automatically create Dummy Data
  • Extend Role Tests
  • Run Selenium Tests & Smoke tests in multiple templates with multiple user accounts
  • Clearer Error Messages
  • Simplify Selenium Tests and make them easier to read and more robust.
  • Adapt tests to meet needs of evolving CI Server (SysAdmin/ContinuousIntegration)
  • Load Tests
  • Selenium Test show web2py error messages
  • Write Functional Tests using Selenium
  • Figure out how to do unit tests against a web application.

Social Media

Focal Persons: Fran Boon, Michael Howden, Connie White See:

GIS/Mapping

These are a number of GIS/Mapping Tasks to be done:

Wikipedia Locations

Allow Sahana to import Wikipedia locations easily: both Hierarchy & Lat/Lon info

Fix Web2Py Cron on Win32 Service

Web2Py has a nice Cron utility, but this doesn't work currently on Win32 in Service mode: #438

Framework

  • Provide localisation of jquery.ui.datepicker
    • Means that user profile will need extending to support locales
  • Replace jquery.cluetip.js with jquery.ui.tooltip.js (1.9 once released)

Tweet / SMS Parsing

Allow users to provide info via tweets or SMS messages

Mobile Photo/Video Upload

  • Design a widget (to be included in an Eden form) that can be used to select images or video, with any needed detection of the type of phone.

Run Eden on a smart phone

Chat in Sahana

BluePrint/Chat

New Use Cases

Extensions to support:

  • Organizations such as Ten Thousand Villages assist craftspeople in disadvantaged countries organize to purchase supplies and market their crafts. What would such a crafts coop need to help run their business? What's missing from Eden to support this?
  • Maitri provides support to victims of domestic violence.
    • They have a page listing resources but part of the page is organized topically and the rest by location. Consider how to store the resource data to allow displaying it either by topic or by location, and also make it searchable.
    • Look at the volunteer page. Compare with the existing (incomplete) volunteer module. What additional features might Maitri need to use the Eden volunteer module?

Image Library

Facebook Integration

Flash Drive Version

Extend and configure the flash drive version to support:

  • Different sets of Prepop Data
  • Multiple user access configuration
  • Sync with online instance (auto-set up)

Prepopulate

  • Migrate initialization data from zzz_1st_run.py to prepopulate

Timeline

Usability

Job Jar

Optimisation

Web Setup

Subscription

SaveSearch

Logistics

Other Ideas

To be elaborated on later:

  • User Statistics

Fuller list of Ideas being scoped: BluePrints


BluePrints

Note: See TracWiki for help on using the wiki.