diff --git a/.gitignore b/.gitignore
index 9380dba..de1d76b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,7 +5,7 @@
*.py[co]
*.mo
*~
-dmoj/local_settings.py
+# dmoj/local_settings.py
resources/style.css
resources/content-description.css
resources/ranks.css
diff --git a/dmoj/local_settings.py b/dmoj/local_settings.py
new file mode 100755
index 0000000..607c415
--- /dev/null
+++ b/dmoj/local_settings.py
@@ -0,0 +1,314 @@
+#####################################
+########## Django settings ##########
+#####################################
+# See
+# for more info and help. If you are stuck, you can try Googling about
+# Django - many of these settings below have external documentation about them.
+#
+# The settings listed here are of special interest in configuring the site.
+
+# SECURITY WARNING: keep the secret key used in production secret!
+# You may use
+# to generate this key.
+SECRET_KEY = 's(8*xdlaiy4r@09cidu#)h%%iey39099g=hp(#+kzz+7vefs4u'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True # Change to False once you are done with runserver testing.
+
+# Uncomment and set to the domain names this site is intended to serve.
+# You must do this once you set DEBUG to False.
+ALLOWED_HOSTS = ['0.0.0.0']
+
+# Optional apps that DMOJ can make use of.
+INSTALLED_APPS += (
+)
+
+#path to problem folder
+DMOJ_PROBLEM_DATA_ROOT = '/home/cuom1999/DMOJ/problems'
+
+# Caching. You can use memcached or redis instead.
+# Documentation:
+CACHES = {
+ 'default': {
+ 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
+ }
+}
+
+# Your database credentials. Only MySQL is supported by DMOJ.
+# Documentation:
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.mysql',
+ 'NAME': 'dmoj',
+ 'USER': 'dmoj',
+ 'PASSWORD': '',
+ 'HOST': '127.0.0.1',
+ 'OPTIONS': {
+ 'charset': 'utf8mb4',
+ 'sql_mode': 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION',
+ },
+ }
+}
+
+# Sessions.
+# Documentation:
+#SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
+
+# Internationalization.
+# Documentation:
+LANGUAGE_CODE = 'en-ca'
+DEFAULT_USER_TIME_ZONE = 'America/Mexico_City'
+USE_I18N = True
+USE_L10N = True
+USE_TZ = True
+
+## django-compressor settings, for speeding up page load times by minifying CSS and JavaScript files.
+# Documentation: https://django-compressor.readthedocs.io/en/latest/
+COMPRESS_OUTPUT_DIR = 'cache'
+COMPRESS_CSS_FILTERS = [
+ 'compressor.filters.css_default.CssAbsoluteFilter',
+ 'compressor.filters.cssmin.CSSMinFilter',
+]
+COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.JSMinFilter']
+COMPRESS_STORAGE = 'compressor.storage.GzipCompressorFileStorage'
+STATICFILES_FINDERS += ('compressor.finders.CompressorFinder',)
+
+
+#########################################
+########## Email configuration ##########
+#########################################
+# See
+# for more documentation. You should follow the information there to define
+# your email settings.
+
+# Use this if you are just testing.
+EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
+
+# The following block is included for your convenience, if you want
+# to use Gmail.
+#EMAIL_USE_TLS = True
+#EMAIL_HOST = 'smtp.gmail.com'
+#EMAIL_HOST_USER = '@gmail.com'
+#EMAIL_HOST_PASSWORD = ''
+#EMAIL_PORT = 587
+
+# To use Mailgun, uncomment this block.
+# You will need to run `pip install django-mailgun` for to get `MailgunBackend`.
+#EMAIL_BACKEND = 'django_mailgun.MailgunBackend'
+#MAILGUN_ACCESS_KEY = ''
+#MAILGUN_SERVER_NAME = ''
+
+# You can also use Sendgrid, with `pip install sendgrid-django`.
+#EMAIL_BACKEND = 'sgbackend.SendGridBackend'
+#SENDGRID_API_KEY = ''
+
+# The DMOJ site is able to notify administrators of errors via email,
+# if configured as shown below.
+
+# A tuple of (name, email) pairs that specifies those who will be mailed
+# when the server experiences an error when DEBUG = False.
+ADMINS = (
+ ('cuom1999', 'your.email@example.com'),
+)
+
+# The sender for the aforementioned emails.
+SERVER_EMAIL = 'DMOJ: Modern Online Judge '
+
+
+##################################################
+########### Static files configuration. ##########
+##################################################
+# See .
+
+# Change this to somewhere more permanent., especially if you are using a
+# webserver to serve the static files. This is the directory where all the
+# static files DMOJ uses will be collected to.
+# You must configure your webserver to serve this directory as /static/ in production.
+STATIC_ROOT = '/home/cuom1999/DMOJ/static_root'
+
+# URL to access static files.
+#STATIC_URL = '/static/'
+
+# Uncomment to use hashed filenames with the cache framework.
+#STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.CachedStaticFilesStorage'
+
+############################################
+########## DMOJ-specific settings ##########
+############################################
+
+## DMOJ site display settings.
+SITE_NAME = 'FOOJ'
+SITE_LONG_NAME = 'FOOJ: Modern Online Judge'
+SITE_ADMIN_EMAIL = 'admin@example.com'
+TERMS_OF_SERVICE_URL = '//dmoj.ca/tos' # Use a flatpage.
+
+## Bridge controls.
+# The judge connection address and port; where the judges will connect to the site.
+# You should change this to something your judges can actually connect to
+# (e.g., a port that is unused and unblocked by a firewall).
+BRIDGED_JUDGE_ADDRESS = [('0.0.0.0', 9999)]
+
+# The bridged daemon bind address and port to communicate with the site.
+BRIDGED_DJANGO_ADDRESS = [('localhost', 9998)]
+
+## DMOJ features.
+# Set to True to enable full-text searching for problems.
+ENABLE_FTS = True
+
+# Set of email providers to ban when a user registers, e.g., {'throwawaymail.com'}.
+BAD_MAIL_PROVIDERS = set()
+
+# The number of submissions that a staff user can rejudge at once without
+# requiring the permission 'Rejudge a lot of submissions'.
+# Uncomment to change the submission limit.
+REJUDGE_SUBMISSION_LIMIT = 10
+
+## Event server.
+# Uncomment to enable live updating.
+# EVENT_DAEMON_USE = True
+
+# Uncomment this section to use websocket/daemon.js included in the site.
+#EVENT_DAEMON_POST = ''
+
+# If you are using the defaults from the guide, it is this:
+EVENT_DAEMON_POST = 'ws://127.0.0.1:15101/'
+
+# These are the publicly accessed interface configurations.
+# They should match those used by the script.
+#EVENT_DAEMON_GET = ''
+#EVENT_DAEMON_GET_SSL = ''
+#EVENT_DAEMON_POLL = ''
+# i.e. the path to /channels/ exposed by the daemon, through whatever proxy setup you have.
+
+# Using our standard nginx configuration, these should be.
+#EVENT_DAEMON_GET = 'ws:///event/'
+#EVENT_DAEMON_GET_SSL = 'wss:///event/' # Optional
+#EVENT_DAEMON_POLL = '/channels/'
+
+# If you would like to use the AMQP-based event server from ,
+# uncomment this section instead. This is more involved, and recommended to be done
+# only after you have a working event server.
+#EVENT_DAEMON_AMQP = ''
+#EVENT_DAEMON_AMQP_EXCHANGE = ''
+
+## CDN control.
+# Base URL for a copy of ace editor.
+# Should contain ace.js, along with mode-*.js.
+ACE_URL = '//cdnjs.cloudflare.com/ajax/libs/ace/1.2.3/'
+JQUERY_JS = '//cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js'
+SELECT2_JS_URL = '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js'
+SELECT2_CSS_URL = '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css'
+
+# A map of Earth in Equirectangular projection, for timezone selection.
+# Please try not to hotlink this poor site.
+TIMEZONE_MAP = 'http://naturalearth.springercarto.com/ne3_data/8192/textures/3_no_ice_clouds_8k.jpg'
+
+## Camo (https://github.com/atmos/camo) usage.
+#CAMO_URL = ""
+#CAMO_KEY = ""
+
+# Domains to exclude from being camo'd.
+#CAMO_EXCLUDE = ("https://dmoj.ml", "https://dmoj.ca")
+
+# Set to True to use https when dealing with protocol-relative URLs.
+# See for what they are.
+#CAMO_HTTPS = False
+
+# HTTPS level. Affects elements generated.
+# Set to 0 to make http URLs canonical.
+# Set to 1 to make the currently used protocol canonical.
+# Set to 2 to make https URLs canonical.
+#DMOJ_HTTPS = 0
+
+## PDF rendering settings.
+# Directory to cache the PDF.
+# PROBLEM_PDF_CACHE = '/home/dmoj-uwsgi/pdfcache'
+
+# Path to use for nginx's X-Accel-Redirect feature.
+# Should be an internal location mapped to the above directory.
+# PROBLEM_PDF_INTERNAL = '/pdfcache'
+
+# Path to a PhantomJS executable.
+#PHANTOMJS = '/usr/local/bin/phantomjs'
+
+# If you can't use PhantomJS or prefer wkhtmltopdf, set the path to wkhtmltopdf executable instead.
+#WKHTMLTOPDF = '/usr/local/bin/wkhtmltopdf'
+
+# Note that PhantomJS is preferred over wkhtmltopdf and would be used when both are defined.
+
+## ======== Logging Settings ========
+# Documentation: https://docs.djangoproject.com/en/1.9/ref/settings/#logging
+# https://docs.python.org/2/library/logging.config.html#logging-config-dictschema
+LOGGING = {
+ 'version': 1,
+ 'disable_existing_loggers': False,
+ 'formatters': {
+ 'file': {
+ 'format': '%(levelname)s %(asctime)s %(module)s %(message)s',
+ },
+ 'simple': {
+ 'format': '%(levelname)s %(message)s',
+ },
+ },
+ 'handlers': {
+ # You may use this handler as example for logging to other files..
+ 'bridge': {
+ 'level': 'INFO',
+ 'class': 'logging.handlers.RotatingFileHandler',
+ 'filename': '',
+ 'maxBytes': 10 * 1024 * 1024,
+ 'backupCount': 10,
+ 'formatter': 'file',
+ },
+ 'mail_admins': {
+ 'level': 'ERROR',
+ 'class': 'dmoj.throttle_mail.ThrottledEmailHandler',
+ },
+ 'console': {
+ 'level': 'DEBUG',
+ 'class': 'logging.StreamHandler',
+ 'formatter': 'file',
+ },
+ },
+ 'loggers': {
+ # Site 500 error mails.
+ 'django.request': {
+ 'handlers': ['mail_admins'],
+ 'level': 'ERROR',
+ 'propagate': False,
+ },
+ # Judging logs as received by bridged.
+ 'judge.bridge': {
+ 'handlers': ['bridge', 'mail_admins'],
+ 'level': 'INFO',
+ 'propagate': True,
+ },
+ # Catch all log to stderr.
+ '': {
+ 'handlers': ['console'],
+ },
+ # Other loggers of interest. Configure at will.
+ # - judge.user: logs naughty user behaviours.
+ # - judge.problem.pdf: PDF generation log.
+ # - judge.html: HTML parsing errors when processing problem statements etc.
+ # - judge.mail.activate: logs for the reply to activate feature.
+ # - event_socket_server
+ },
+}
+
+## ======== Integration Settings ========
+## Python Social Auth
+# Documentation: https://python-social-auth.readthedocs.io/en/latest/
+# You can define these to enable authentication through the following services.
+#SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = ''
+#SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = ''
+#SOCIAL_AUTH_FACEBOOK_KEY = ''
+#SOCIAL_AUTH_FACEBOOK_SECRET = ''
+#SOCIAL_AUTH_GITHUB_SECURE_KEY = ''
+#SOCIAL_AUTH_GITHUB_SECURE_SECRET = ''
+#SOCIAL_AUTH_DROPBOX_OAUTH2_KEY = ''
+#SOCIAL_AUTH_DROPBOX_OAUTH2_SECRET = ''
+
+## ======== Custom Configuration ========
+# You may add whatever django configuration you would like here.
+# Do try to keep it separate so you can quickly patch in new settings.