Mastodon
  • What is Mastodon?
  • Using Mastodon
    • Signing up for an account
    • Setting up your profile
    • Posting toots
    • Using the network features
    • Dealing with unwanted content
    • Promoting yourself and others
    • Set your preferences
    • More settings
    • Using Mastodon externally
    • Moving or leaving accounts
    • Running your own server
  • Running Mastodon
    • Preparing your machine
    • Installing from source
    • Configuring your environment
    • Installing optional features
      • Full-text search
      • Hidden services
      • Single Sign On
    • Setting up your new instance
    • Using the admin CLI
    • Upgrading to a new release
    • Backing up your server
    • Migrating to a new machine
    • Scaling up your server
    • Moderation actions
    • Troubleshooting errors
      • Database index corruption
  • Developing Mastodon apps
    • Getting started with the API
    • Playing with public data
    • Obtaining client app access
    • Logging in with an account
    • Guidelines and best practices
    • Libraries and implementations
  • Contributing to Mastodon
    • Technical overview
    • Setting up a dev environment
    • Code structure
    • Routes
    • Bug bounties and responsible disclosure
  • Spec compliance
    • ActivityPub
    • WebFinger
    • Security
    • Microformats
    • OAuth
    • Bearcaps
  • REST API
    • OAuth Scopes
    • Rate limits
  • API Methods
    • apps
      • oauth
    • accounts
      • bookmarks
      • favourites
      • mutes
      • blocks
      • domain_blocks
      • filters
      • reports
      • follow_requests
      • endorsements
      • featured_tags
      • preferences
      • suggestions
    • statuses
      • media
      • polls
      • scheduled_statuses
    • timelines
      • conversations
      • lists
      • markers
      • streaming
    • notifications
      • push
    • search
    • instance
      • trends
      • directory
      • custom_emojis
    • admin
    • announcements
    • proofs
    • oembed
  • API Entities
    • Account
    • Activity
    • Admin::Account
    • Admin::Report
    • Announcement
    • AnnouncementReaction
    • Application
    • Attachment
    • Card
    • Context
    • Conversation
    • Emoji
    • Error
    • FeaturedTag
    • Field
    • Filter
    • History
    • IdentityProof
    • Instance
    • List
    • Marker
    • Mention
    • Notification
    • Poll
    • Preferences
    • PushSubscription
    • Relationship
    • Report
    • Results
    • ScheduledStatus
    • Source
    • Status
    • Tag
    • Token

Code structure

Where to find certain parts of the codebase.

This page is under construction.

Code structure

The following overview should not be seen as complete or authoritative, but as a rough guidance to help you find your way in the application.

Ruby

PathDescription
app/controllersCode that binds business logic to templates
app/helpersCode that can be used from views, i.e. common operations
app/libCode that doesn’t fit in the other categories
app/modelsCode that represents data entities
app/serializersCode that generates JSON from models
app/servicesComplex logical operations involving multiple models
app/viewsTemplates for generating HTML or other output
app/workersCode that executes outside the request-response cycle
specAutomated test suite

JavaScript

PathDescription
app/javascript/mastodonCode for the multi-column React.js application
app/javascript/packsCode for non-React.js pages

CSS and other assets

PathDescription
app/javascript/imagesImages
app/javascript/stylesCode that turns into CSS via Sass

Localizations

PathDescription
config/localesServer-side localizations in the YML format
app/javascript/mastodon/localesClient-side localizations in the JSON format

Localization maintenance

All locale files are normalized to ensure consistent formatting and key order, which minimizes changesets in version control.

CommandDescription
i18n-tasks normalizeNormalize server-side translations
yarn run manage:translationsNormalize client-side translations

Last updated January 12, 2020 · Improve this page

Sponsored by

Dotcom-Monitor LoadView

Join Mastodon · Blog · ·

View source · CC BY-SA 4.0 · Imprint