Coophoria is a tool used to facilitate meetings using a whiteboard displayed on the user's desktop. The whiteboard is called the Phorboard. Most meetings are held between a teacher and one or more students, although Coophoria can also be used for team collaboration.


All text is in a mono-spaced font. The Phorboard can be subdivided into rectangular panels, which can be further subdivided into smaller panels, recursively. Headings containing a larger mono-spaced font can occur at the top of each panel. Superscripts and subscripts are in the same font and size as body text, but are raised or lowered by half the height of a line of text. Underlined non-black text acts like a button which can be clicked. Widgets such as check boxes take up space equal to 2 adjacent characters. Images, animations, and diagrams can appear anywhere panels can appear.


In meetings with only 2 participants, the mouse cursor of the remote user (as opposed to the local user) is red and is animated, moving in a straight line from mouse click to mouse click. The user can control-click to force a mouse click seen by the remote user, and that click has no effect on widgets such as buttons. The Phorboard can also be used in single-user mode.

In meetings with more than 2 participants, one user is the leader and the other users are clients. A column of client names (first and last initials) is displayed on the left-hand side of the Phorboard, in assorted colors with a white background. When a client clicks on her initials, they toggle between highlighted (colored background) and normal (white background). The leader selects the current client by clicking on her initials. That client becomes the remote user from the point of view of the leader. The leader is always the remote user from the point of view of the clients.


The Phorboard is powered by an open source scripting language called Cooperscript. The text displayed in Phorboard panels (which is always in a mono-spaced font) can be formatted using Coopertags. All users can upload a certain quota of Cooperscript and Coopertags files, and subscribers are allowed to exceed the quota. Cooperscript and the Phorboard are implemented using Java.


Coopertags is a simplified markup language (uses .CPTG file extension) used to replace HTML. Arbitrary Coopertags code can be embedded in the Cooperscript echo statement. Coopertags syntax, where asterisk (*) means repetition, is defined as follows:

  • Tags:
    • [tag]
    • [tag: body]
    • [tag (fld val)*: body]
  • Body:
    • text
    • [: text]*
    • [(fld val)*: text]*
  • Call Cooperscript code:
    • [expr: <expr>]
    • [exec: <stmt>... ]
    • [coop: <path>]


Organizations include agencies and nonprofits. Agencies hire paid tutors and Coophoria receives a transaction fee of 3 percent (they can charge their tutors a commission, over and above the transaction fee, if desired). Paid tutors who don't belong to any agency are charged a transaction fee of 7 percent. Nonprofits can only hire volunteer tutors, who must devote half of the tutoring hours teaching donors. Those donors are encouraged to make a suggested minimum donation of $10 per session, half of which goes to Coophoria and the other half to the nonprofit. The volunteer tutors also teach clients, who must register with the nonprofits and pay no fees. All tutors can elect to teach via webcam or in-person, instead of using the Phorboard. Nonprofits employ waiting lists since the demand for free tutoring is generally higher than the supply of volunteer tutors.

Tutor Search

Tutors have home pages written in Coopertags which can be searched by students. Organizations also have searchable Coopertags home pages, and are charged a monthly fee for those home pages which have server-side code written in Cooperscript. These home pages are formatted similar to the Phorboard, using mono-spaced body text.

Organization Data Customizable

All core organization database tables are mirrored in both MySQL and Cooperscript Database format. Any organization can add fields and entire tables. All functionality is written in Cooperscript, so it can be customized.

Cooperscript Database Storage

  • Indexes are B-trees consisting of 64-byte records each having 8 data and 8 sub-rec ptrs.
  • Exceptions are leaf 64-byte records each having 16 data ptrs. (keep track of tree depth)
  • Record data stored in 128-byte chunks
  • Records larger than 128 bytes need a 64-byte header having up to 16 data ptrs.
  • No record has more than 16 chunks of size 128 bytes or 32 kb
  • Use MySQL binary type for all chunks and records
  • Server-side functionality written in Cooperscript

Implementation Steps

  1. Develop Cooperscript 0.1
  2. Learn how to do unit testing
  3. Develop Cooperscript 1.0
  4. Write Coopertags design specs
  5. Develop Phorboard
  6. Integrate Phorboard with Cooperscript
  7. Begin to implement Phorboard WebSocket
  8. Finish reading Java Web Programming book
  9. Read Java WebSocket book
  10. Finish Phorboard WebSocket
  11. Design bare bones website
  12. Enhance website
  13. Approach Progress Place
  14. Beta test Coophoria
  15. Finish website
  16. Develop Cooperscript code editor
  17. Develop Cooperscript-to-Javascript Converter
  18. Develop Cooperscript Database functionality
  19. Support tutor/organization home pages
  20. Approach West Neighbourhood House
  21. Recruit other clubhouses
  22. Implement fee payments
  23. Recruit Executive Director
  24. Advertise for tutors/clients
  25. Advertise for agencies and nonprofits
  26. Recruit coders and authors to write lessons
  27. Make website scalable
  28. Implement internationalization
[ Back to Top ]