Click on a thumbnail to launch the gallery

STEM TIPS is an instructional coaching platform supporting teacher preparation programs and school districts in developing and retaining new STEM teachers. It's currently on Elgg 1.9 and has numerous unique features:

  • Users can link to or upload content, and attach it directly to posts, comments, or collections via a unified wizard. It automatically shows item previews and avoids duplication by offering to attach existing content if found.
  • User collections are reorderable lists (via the list API) of bookmarks, files, posts, comments, groups, or even other collections. When viewing content, you can pull down a list of resources linking to it, or click a button to place it in one of your collections. Collection items can be previewed inline via lightbox.
  • Posts, comments, and other content creation/attachment do not require page refreshes.
  • Users who like or comment within a comment stream are automatically subscribed to notifications, or can subscribe manually.
  • Users can be tagged with a pre-selected and categorized list of terms. These are automatically copied to new content, are autocompleted, can be pulled from a dropdown, and can be used for searching content and members.
  • Search is nearly instantaneous (Solr) and users can check from the site-wide tags and categories.
  • Users can quickly create private groups stripped down for only discussion.
  • Group profiles similarly emphasize a single discussion stream.
  • Most users are registered into an organization, and can be assigned various roles within them. Organizations have their own set of featured collections.
  • Coaching roles allow users to mentor a list of users, and keep tabs on their activity.
  • Users can view their interactions with any other user.
  • Cometchat is tightly integrated. Hover menus and profiles have a button to open chat and the button shows chat availability.
  • Groups can host Zoom meetings.
  • More developer notes:

    • UX is built around rivers filtered to a single "Post" content type. Other stuff can be created (and you can get to listings of, say, files or whatever) but it's off the main path. Groups have almost the same UI to encourage jumping into the discussion.
    • In hindsight trying to reuse page handlers by making river queries hookable made development fast, but less readable and more chaotic to manage.
    • Uses a hook-based capabilities API to handle more complex permissions decisions
    • Users can have multiple roles within different agencies and those roles tie into capabilities. This is a lot more expressive than, say, Arck Roles, but at a huge price since the API has to be laboriously baked into actions/menus. There's no UI for anything but the code is pretty readable.
    • The Discussions feature uses groups with a custom subtype, and core modifications are needed to keep these out of the /groups listings, which is a bummer. Allowing most queries to be hook alterable would help (if it's worth the big growth of API surface area).
    • The core mods stay on our custom production git branch. Upgrades are merges into that.
    • We're using Plupload for async, chunked uploads and transcoding video to WebM/H.264.
    • The Add New User form auto-generates a username from display name/e-mail, offers a random password, and allows bypassing the notification.
    • We have Etherpad lite integrated (as pages), but are still on Apache 2.2 where websockets are way buggy. Etherpad UX just isn't that great and UI customizations is a big pain.
    • The code changes for upgrades to 1.10, 1.11, and 1.12 have been completed, sitting in git branches awaiting a server upgrade. The site began life on an early 1.9 beta snapshot, and I won't do that again!
    • Way too many interdependencies among plugins. We have a plugin for each big logical feature, but these aren't really reusable anyway so it arguably just makes code harder to find. Git history is a lot better for finding out how features were added and where code lives.