diff --git a/flaskregisterpages.py b/flaskregisterpages.py
new file mode 100644
index 0000000..1f0a949
--- /dev/null
+++ b/flaskregisterpages.py
@@ -0,0 +1,59 @@
+# Copyright 2022 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file or at
+# https://developers.google.com/open-source/licenses/bsd
+"""This file sets up all the urls for monorail pages."""
+
+import logging
+from framework import excessiveactivity
+import settings
+from flask import Flask
+
+from project import project_constants
+
+
+class ServletRegistry(object):
+
+  _PROJECT_NAME_REGEX = project_constants.PROJECT_NAME_PATTERN
+  _USERNAME_REGEX = r'[-+\w=.%]+(@([-a-z0-9]+\.)*[a-z0-9]+)?'
+  _HOTLIST_ID_NAME_REGEX = r'\d+|[a-zA-Z][-0-9a-zA-Z\.]*'
+
+  def __init__(self):
+    self.routes = []
+
+  def _AddRoute(
+      self, path_regex, servlet_handler, method='GET', does_write=False):
+    """Add a GET or POST handler to our flask route list.
+
+    Args:
+      path_regex: string with flask URL template regex.
+      servlet_handler: a servlet handler function.
+      method: string 'GET' or 'POST'.
+      does_write: True if the servlet could write to the database, we skip
+          registering such servlets when the site is in read_only mode. GET
+          handlers never write. Most, but not all, POST handlers do write.
+    """
+    if settings.read_only and does_write:
+      logging.info('Not registring %r because site is read-only', path_regex)
+    else:
+      self.routes.append([path_regex, servlet_handler, [method]])
+
+  def _SetupServlets(self, spec_dict, base='', post_does_write=True):
+    """Register each of the given servlets."""
+    for get_uri, servlet_handler in spec_dict.items():
+      self._AddRoute(base + get_uri, servlet_handler, 'GET')
+      post_uri = get_uri + ('edit.do' if get_uri.endswith('/') else '.do')
+      self._AddRoute(
+          base + post_uri, servlet_handler, 'POST', does_write=post_does_write)
+
+  def Register(self):
+    """Register all the monorail request handlers."""
+    return self.routes
+
+  def RegisterExcesiveActivity(self, service):
+    flaskapp_excessive_activity = Flask(__name__)
+    flaskapp_excessive_activity.add_url_rule(
+        '/',
+        view_func=excessiveactivity.ExcessiveActivity(services=service).handler,
+        methods=['GET'])
+    return flaskapp_excessive_activity
