Uploaded Content

Revision as of 13:45, 12 August 2026 by Mshell (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This page contains notes on allowed content uploads to GoalStriving. This will likely become the most expensive resource constraint as we scale. Once we allow people to have a certain amount of disk space, taking it away (after they have used it) is nearly impossible.

Options

These are options to consider for storage.

  1. Centrally managed AWS S3 bucket for each user
  2. Users can manage their own AWS S3 bucket
  3. Users use their own Google Drive, OneDrive, Box.com as external repositories

Ease of Integration

For MediaWiki itself, storing uploaded files in S3 is already a known pattern. The MediaWiki AWS extension can store uploaded files in Amazon S3 instead of the local images/ directory, and MediaWiki’s upload documentation explicitly calls out alternate storage backends such as S3.

  • Default: WikiFam-managed S3 storage
  • Advanced option: user-owned S3 bucket
  • Later integrations: Google Drive / OneDrive / Box as external repositories or linked content, not as transparent MediaWiki file storage

OneDrive, Google Drive, and Box are document-management APIs with OAuth, per-user permissions, sharing semantics, token refresh, rate limits, and different object models. They are feasible, but they are more integration work.

Cost of AWS S3

Storage Tier

  • S3 Standard (the most expensive) is roughly $0.023 per GB-month for the first 50 TB
  • S3 Intelligent-Tiering: after a few months, we can start to use this and it will save some money

Realistic Scenarios

  • We offer 10GB per user
  • If we have 1,000 users and each are using half of their storage, we would only be paying $115 per month in storage.

Data Transfer Costs

At scale, I would be at least as concerned about data transfer and request costs as storage. If someone stores a 100 MB video and watches it repeatedly, storing it costs only about: $0.0023/month. The bandwidth involved in repeatedly delivering that video could cost considerably more.

AWS specifically breaks S3 pricing into storage, requests/retrieval, data transfer, management and other components. Data transfer between S3 and AWS services in the same region can be free under applicable conditions, while internet delivery has separate pricing considerations.

For WikiFam, I'd therefore design around CloudFront in front of S3, rather than having browsers continually retrieve objects directly from S3.

The Plan

  • When I build the production infrastructure, I will configure an S3 bucket for each user
  • Max 1GB total; max 25MB file size
  • Common uploads: PDF receipt, PDF file, Word/Excel/PPT documents, Screenshots, Photos, Short videos