Features of GoSocial

The GoSocial codebase is released in multiple editions:

  • The Free & Open Source Edition contains all of the baseline functionality that any social networking site needs to be basically usable.
  • The Paid & Licensed Editions bridge the gap between the Open Source features and the full set of features that the upstream production website had that GoSocial is based upon.

The Free & Open Source Edition is released as free software under the GNU General Public License. You are free to take it and build on it, but any changes you make to the codebase must also be released as open source software to your users, and you must credit the GoSocial project for giving you the foundation for your website.

The Paid & Licensed Editions are suitable to be used for closed source and commercial projects. If interested, visit Cuvou.com and get in touch to discuss your project's needs and pricing information. See the feature list below for an idea on the delta between the Free & Licensed feature set: any of the additional features can be backported to suit your custom project, with licensing fees scaling in proportion to how many of these features you need.


Features

The Free & Open Source Edition comes with all of the basic features that any social networking website would need to be basically useful.

Some of these features include:

  • User Accounts
    • Sign up (w/ optional e-mail verification), Log in, Forgotten Password workflows (e-mailed links to reset passwords).
    • Two-Factor Auth supported (TOTP).
    • Profile Pages, with custom theme support (background/header images, colors). Essay fields like 'About Me' and basic fields like location, age and gender.
    • Login Sessions: users can see the devices they're logged in from and remotely log out other devices.
    • Compliance with GDPR and similar privacy laws: users may deeply delete their account and all their media and data, and user data export to ZIP file supported.
  • Social Features
    • Friend Requests & Follows. Users can mark some of their media as 'friends only' or they may Follow people and be notified about public media they share.
    • Likes & Comments.
    • On-site Notifications & Web Push Notifications supported.
    • Direct Messages with on-site inboxes.
    • A "Member Directory" to browse and search for profiles on the site.
    • "Who's Nearby?" to sort members on the directory by their distance to you, or by their proximity to a major city you search for.
  • Forums
    • The admin can create a handful of Forum boards around various topics and users can create threads and replies under each forum.
    • Polls may be added to forum threads to collect votes from other users.
  • Photo Galleries
    • Each user has their own Photo Gallery that they can upload media to.
    • There is a Site-wide Photo Gallery which shows photos from the community all in one place. Users opt in photos to be featured on the Site Gallery.
    • Photo visibility options include "Public" (any logged-in user can see it), "Friends only" (only your friends can see it), or "Private" (you selectively unlock your private content for others on a per-person basis, with ability to revoke that share from one or all easily).
    • Animated GIFs supported: uploaded GIF images are encoded to small .mp4 video clips using ffmpeg, for file size/bandwidth/performance reasons.
    • Media Quotas: set a file size limit for how much media each user may upload. With a quota set at 25 MiB for example, users may be able to share about 200 photos (depending on the original quality and how it got compressed at upload time).
    • Optional support for 'Explicit' (NSFW) media. If enabled, Explicit content is hidden except to users who opt-in to see it on their settings.
  • Optional Webcam Chat Room integration
    • BareRTC is a Free & Open Source multi-user chat room application with video streaming (webcam) support included.
    • BareRTC was created specifically for the upstream website that GoSocial was branched from. As such, GoSocial has tight integration support with BareRTC 'out of the box.'
    • User Authentication (profile pictures, admin status), Profile Cards, Block Lists, Friendship Status, the ability to Report chat messages to your site's admin, etc. are all included.
  • User Safety
    • Block lists: when users block each other, the site will completely hide the pair of users from each other everywhere, giving an identical appearance that the other user may have just deleted their account entirely.
    • Privacy Settings: users can limit who can send them messages, view their profile page, or comment on their content.
    • Two-Factor Auth and Login Sessions for your users to secure their own accounts.
  • Admin
    • An 'Admin Flag' for user accounts and 'Admin Permission Scopes' to control which specific admin features that user has access to. An admin who has no scopes assigned has very limited permission to actually do anything beyond the normal user capabilities.
    • Feedback & Reports: there are handy Report buttons all throughout the site to enable users to easily flag inappropriate content for admin review.
    • Change Logs keep a history of when things on the site were modified, such as a history of friend requests, photo gallery changes, etc.
    • Admin dashboards to get insights about a user account (see their block lists, media usage quota, IP address history, etc.)
  • Security
    • Protection from CSRF (Cross Site Request Forgery) on every POST-able form.
    • Rate limiting on failed login attempts and to reduce spam.
    • Optional Cloudflare Turnstile CAPTCHA support to protect your signup and public contact forms from spammers.
    • Optional Signed Photo URLs to protect the static photos shared by your users (so the direct link to the .jpg image has a URL signature unique to the logged-in viewer to protect against off-site deep links to the content).

The Paid & Licensed Editions come with additional features that were built for the upstream production website that this codebase was branched from. Get in touch to inquire about access to these features and to discuss what your project's needs are and pricing.

  • Certification Photos
    • Create a barrier to entry that helps keep fake profiles and spam bots off your platform. All social features of the site (chat, forums, etc.) can be gated to 'Certified Users Only' to protect your community from bad actors.
    • This workflow requires new user accounts to submit a selfie of themselves holding onto a sheet of paper that has their username, the site's name, and today's date written on it.
    • Admins review submitted Certification Photos and can approve them or reject them with an explanation sent back to the user.
  • Photo Gallery Enhancements
    • On the Site Gallery, users may 'Mute' people who they don't want to see there and have the muted person's content not appear for them again.
    • If 'Explicit' media is enabled, your community members may help to flag photos that should have been marked as 'Explicit,' with a workflow for the photo's owner to appeal that decision and have an admin weigh in.
  • Video Gallery
    • Allow your users to upload videos with audio, with an ffmpeg video encoding workflow.
    • Chunked file uploads: arbitrarily large videos may be uploaded and they are uploaded in multiple chunks, for robustness against network outages or failures. A failed video upload can be resumed later with only the still pending chunks needing to be uploaded.
    • Arbitrary max upload size: you can set a hard limit on the total size of the original media uploaded. After encoding, the final size on disk will often be smaller than the original upload.
    • An encoding worker uses ffmpeg to encode the upload to be suitable for Web playback (e.g. using h.264 and AAC for video/audio codecs, scaling down to a max resolution like 1080p, etc.)
  • Events
    • A fully featured 'Events & RSVP' feature where users can schedule their own (in-person) events and manage RSVPs from others who want to attend the event.
    • Event Photo, Comment Form, Calendar Links.
  • Travel Plans
    • Allow your users to advertise their upcoming travel plans in case they want to meet up with locals of that area. Start+End Dates, City, GPS location, custom description and comment threads.
  • Places
    • Allow your community to 'crowd source' a database of interesting places in the world relating to your community's niche.
    • Users may write a description, upload a photo, mark a spot on the map where the place exists, checkbox all the features and amenities of the place, list directions and parking information, and each place has its own discussion forum as well.
    • Map View to browse all the places visually on a map of the world.
  • Miscellaneous
    • Footprints: allow users to see who has visited their profile page.
    • Deleted User Memories: store a user's block lists when they delete their account, so if they sign up later with the same username or e-mail you can restore their blocked lists for them.
    • Optional: Admin Content Approval -- screen all user submitted media (photos/videos) and let your admin team check them out first to ensure appropriateness for your community.
  • Optional Specific Vendor Integrations
    • The upstream website that GoSocial was branched from had integrations with specific business partners. In case your platform would want to use these same partners, the source code for these integrations can also be made available.
    • Yoti: Age Verification as part of the Certification Photos workflow.
    • CCBill: payment provider for paid supporter features.

Tech Stack

On the technical side, some of the features of GoSocial's codebase include:

  • Backend written in Go using largely the standard library (net/http, html/template).
  • Database: GORM for the ORM and query builder, with built-in support for PostgreSQL (preferred) or SQLite. Some website features require Postgres, notably the location-aware ones like Who's Nearby, which are not supported when using SQLite.
  • Redis cache for rate limiting and temporary tokens (new account e-mail verification URLs, forgotten password links sent by e-mail, etc.)
  • Front-end uses server-side rendered templates (html/template) and minimal JavaScript (mostly vanilla JS, Vue.js on some pages where appropriate). The default front-end design uses Bulma.css.
Loading...