A school information system made in django. Relies heavily on the django admin interface and includes many pluggable apps.
Python JavaScript HTML CSS
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
api TG-63 #closed Jun 12, 2015
appy Merge branch 'master' of https://github.com/burke-software/django-sis Jul 22, 2014
components New report builder version Feb 3, 2015
django_sis Allow disabling grades Feb 5, 2015
docs Update install.md Feb 8, 2015
ecwsp Fixed issue where uploaded gradebook spreadsheet wouoldn't work Jun 13, 2015
media Revert "Revert "Removed omr"" Nov 17, 2014
screenshots Adding screenshot files for Juan Jan 9, 2013
static_files Harden menu logic more Mar 19, 2015
templates Improve Open Sans link tag Mar 19, 2015
.buildpacks fighting heroku, no idea what I'm doing Jul 30, 2014
.gitignore .gitignore change May 22, 2014
.pylintrc Added template theme customization for simple_import Feb 23, 2013
.travis.yml Merge branch 'develop' Feb 18, 2015
Dockerfile Docker builds should be faster for most use cases Jan 6, 2015
README.md Update README.md Oct 24, 2015
backslash_ldap.py Slop. Apr 12, 2014
core-requirements.txt TG-63 #closed Jun 12, 2015
dev-requirements.txt Comment out unfinished courses dashlet Jan 12, 2015
docker-compose-production.example Renamed fig to docker-compose Feb 28, 2015
docker-compose.yml commenting out django custom field Mar 12, 2015
gpl.txt bleh Apr 5, 2012
manage.py Cleaned up directories to be more like modern django projects with Jan 18, 2013
mkdocs.yml Moving to mk for docs Dec 9, 2014
requirements.txt Give me a fucking break Mar 9, 2015
rtd-requirements.txt RTD is dumbly trying to install all requirements.txt so here is a file Dec 9, 2014
run-production.sh Change default run production to use uwsgi Nov 17, 2014
run.sh Revert "my best guess at an improved (supervised) celery arsenal on d… Jan 22, 2015
setup.py django 1.7 Dec 31, 2014
supervisord.conf add celery to supervisord Jan 26, 2015
test_settings.py Fixed tests running in sqlite Apr 19, 2014


This project is no longer active and you are not advised to use it. Read more here if you'd like.


This is an open source school information system built with Django. It relies heavily on the django admin interface for backend usage (registrar, etc). Below you will find a list of apps included in the software with a brief description of each.

Burke Software and Consulting offers support and hosting for $3000/year for a school of < 500 students. Contact us for details.

Build Status

Quick Install

You should have at least basic django deployment and docker experience to run django-sis. We test only in Ubuntu 12.04 and PostgreSQL. Other environments might work but are not supported.

Run the docker images as described in docker-compose.yml. We suggest creating a docker-compose-production.yml file with your own condocker-composerations.


Modify settings_local.py or edit environment variables to add your own settings, such as your database.

Set up database

docker-compose run --rm web ./manage.py migrate

Run a test server

docker-compose up


  1. git pull
  2. docker-compose build
  3. docker-compose run --rm web ./manage.py migrate
  4. docker-compose run --rm web ./manage.py collectstatic
  5. docker-compose restart

We don't currently release stable versions of django-sis. You can assume everything in git is as "stable" as possible. If you require more stability consider paying for support.


##School Information System (SIS) This tracks the students’ information and their parent/guardian/contact information. This module also records cohorts (groupings of students for easier class enrollment), basic faculty information, and school year information. This is the central module for django-sis and is required for use of any other module. All other modules are optional.

##Admissions This tracks potential students and their registration processes. It allows various admission levels to be added as well as steps that need to be completed before moving onto the next level. It also tracks any open houses a student has attended and how the student heard about the school.

Alt text

Every step in the process can be fully customized to serve your school’s needs. From an applicant's page, the filter function may sort results accordingly.

Alt text

##Alumni This tracks in which college a student has enrolled after graduating and any alumni actions (such as reunions). Information can be imported from National Student Clearinghouse (http://www.studentclearinghouse.org/). Additionally, SWoRD can store interactions between the former students and current staff as shown below:

Alt text

##Attendance The attendance module allows homeroom teachers to take attendance each day and write notes for absentees. SWoRD stores this data and allows users to generate reports, look up single students, aggregate reports, and produce perfect attendance certificates.

Alt text

##Discipline The discipline module tracks a student’s discipline information including infractions, actions to be taken, and the teacher who reported the infraction. Similar to the other modules in SWoRD, discipline reports can be generated and exported into an Excel document for convenience.

Alt text

##Schedule, Courses, and Grades These modules track courses, enrollments, marking periods, class periods, marking period grades, student awards, standardized tests information, and results (ex: SAT, ACT, PLAN, etc). SWoRD stores marking period grades and final grades; these grades can then be generated into a report card or transcript. At present, SWoRD supports integration with the free online gradebook Engrade. Alt text

##Volunteer Tracking This module tracks any volunteer work a student is required to do including site and site supervisor information. A student can volunteer at multiple sites.


This tracks students’ counseling meetings and referrals. It allows teachers to submit online referral forms that notify the counselor and also tracks follow-up actions after a meeting.

##Work Study The Work Study module involves many different facets. Students from the School Information module can be converted to Student Workers so that more specialized information can be tracked in the Work Study module. Students may submit time sheets for supervisors to approve, make notes, and evaluate the student. This process is shown below: Alt text

All submitted time sheets are stored on SWoRD to allow work study staff to keep track of approved or unapproved time sheets. Users with access to these stored time sheets are able to view each time sheet’s information including date, hours, student accomplishments, and supervisor comments. Alt text

Student work attendance is also tracked, allowing faculty to list reasons for missed work days, fees and to specify when the student will make up for the missed day. Alt text

SWoRD allows users to save basic company information for each work site associated with the school including Department of Labor forms. Additionally, information from client visits is saved along with the pertinent evaluations shown below. Alt text

Development Environment

You can easily get Django-sis running in an isolated development environment using Fig and Docker. We have tested this to work on both OSX and Ubuntu.

Fig And Docker

See docker-compose installation docs


*The following commands need to run from Linux or from the boot2docker virtual machine shell.

docker-compose run --rm web python manage.py migrate


docker-compose up

Enjoy your django-sis instance on localhost:8000*

*may be alternative address if using boot2docker.

To log in set up sample data or run

docker-compose run --rm web python manage.py createsuperuser

Sample Data

We have some sample data that might be useful when testing out the development environment. To load the data, try this:

docker-compose run --rm web python manage.py populate_sample_data

This will create a superuser with username/password of aa/aa

Multi tenant (optional)

Set MULTI_TENANT=True in settings_local.py. You can create a new tenant with

from ecwsp.customers.models import Client

tenant = Client(domain_url='localhost',
                name='My First Tenant',)

Read more at https://django-tenant-schemas.readthedocs.org/en/latest/