Giter VIP home page Giter VIP logo

bequeath.me's People

Contributors

erikmcclure avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

bequeath.me's Issues

Hosting Automation

At minimum, account for fixed hosting costs per month.

For cloud based hosting, this requires keeping track of bandwidth usage and demand, then picking an appropriate cloud tier on the service chosen and acquiring the monthly bill for that tier to inject as a monthly expense.

DMCA Automation

DMCA takedown requests should be routed, if possible, to the appropriate user, and then the user is allowed to respond. If they do not respond, automatically take down the content. If the user responds but the DMCA filing agent does not respond, the DMCA is marked resolved and nothing is taken down. If the filing agent responds again, it is elevated to moderator attention automatically because legal action must be necessary for further escalation.

If a DMCA takedown request is made without appropriate context, it can be checked by a moderator on the moderation page. All DMCAs are shown here, but DMCAs that have no apparent target user or were sent to the legally required DMCA safe harbor e-mail are highlighted.

Salary Automation

Salaries must be at a lower priority than core fees necessary to keep the company running. Salary payout for contractors can ignore payroll taxes, but if the company hires an employee on payroll the expense calculator must withhold the payroll tax, social security tax, etc. portions of the paycheck and keep these amounts in the bank without allowing them to be used for the financial buffer. These withheld paycheck amounts must then be used by the tax calculator to pay appropriate payroll/social security/etc. taxes, or at least correctly figure out the amounts necessary, possibly by exporting to another service (e.g. TaxAct).

Tax Automation

  • State B&O Tax
  • State Corporate Income Tax
  • State Payroll Withholding
  • Federal Corporate Profit Tax
  • Federal Payroll Taxes
  • EU VAT taxes (not applicable to pledges that do not receive a reward)

General Fee Automation

Yearly Fees

  • Company registration fee
  • Company LLC fee
  • Corporate mailbox fee
  • Domain registration fee

Automatic Website Upgrade

The website maintains a preproduction environment where all upgrades are tested. The PPE should clone the production database, then replace all Stripe IDs and paypal emails with verified fake test profiles. In PPE mode, any charge attempt should throw away the given customer ID and use a random test one instead no matter what, to act as a fallback ensuring no real transactions are ever made from the PPE.

In order to trigger an automated website upgrade, a commit must be code-reviewed by a majority of users with pull access to the repo, signed by them, and pass all the initial Travis CI tests. This will trigger a database clone from PPE and a git pull, followed by running any database migration. If the build fails or the database migration fails at any point, the upgrade is canceled, the commit is marked "bad" and the process aborted. A series of additional integration tests are run on the new preproduction environment, including simulating a year's worth of random transactions and payouts. All of these tests must pass before a production maintenance window is scheduled.

The production server maintains a 24-day running average of the most active hours of the website on a weekly basis. When preproduction decides it has a working, verified build to push to production, the website schedules a maintenance task window for the next day during the least active hour of that day. An hour before maintenance starts, a full backup is performed and uploaded to an external server. The production server replaces the website nginx server with a "Down for maintenance" message and notifies twitter while it does a git pull, database migration, and website rebuild.

At a later time, these maintenance windows can also update packages and the kernel if necessary. This requires a PPE environment on a completely different machine or VM such that it can test upgrading all of it's packages in addition to ingesting the new commit. If the package upgrade fails or the commit fails, it should roll back the package upgrades and re-try the commit. It can then direct production to either update it's packages to the specified versions (not just to whatever version happens to be out to avoid a race condition), or to hold them back until a commit is provided that does not cause a migration failure. If the package upgrading requires a server restart or an nginx restart, this should be done first, right after announcing it to twitter, so the maintenance message can go up.

Travis CI Testing

A full test suite should be included with the website and integrated with Travis CI so that pull requests can be automated vetted as not breaking crucial website functionality. Any merge with the mainline must pass the initial Travis CI tests to trigger a preproduction ingestion scenario.

Discord Support Bot

The discord bot exists only to detect whether or not a user appears to have gotten help or not. If no activity is detected, it will link them to the support e-mail to contact a human directly. It could also ping the moderators for the user in an attempt to notify them. It has the same logic as the twitter bot, and if the user mentions an error code it will also attempt to give them context if it thinks this might help, but it will always provide a way to contact a human for support.

Twitter Support Automation

A twitter account should be created with an automated bot that can respond to basic help inquiries and announces certain events.

Events to announce:

  • Scheduled Maintenance should be announced with a link to the appropriate Github pull request that triggered the site update.
  • Unscheduled Maintenance as a result of an error should be announced with a link to a status page, in case a reversion to a previous state is necessary.
  • Site update posts
  • Significant changes in company funds or expenses that may warrant community participation

Basic Help Actions:

  • The bot should analyze any undirected question by checking the FAQ for similar sounding terms, and then redirect the user to the Discord channel for further assistance.
  • A question that has an error code should refer to an error code lookup table, provide an explanation if possible, then link the discord channel for additional assistance.
  • If it thinks the user has a billing error, it will direct them to the support e-mail directly.
  • If the bot has no idea what's going on, it will say hi and remind them that there is a discord channel where help is available

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.