GeoLab Classroom is an interactive geometry and graphing app made for students to learn by seeing, dragging, changing, and testing ideas in real time.
This project started development when I was in 10th grade. I first made it because I wanted to help my calssmates undersatnd geometry in a more visual way instead of just memorizig formulas from the board. After some time it started getting used in my school to help teach new gen students too, and it still keeps being updated little by little.
Now, and only now, I am open sourcing it so people across the world can use it, improve it, and keep updateing it with me.
- To help students understand geometry more intuatively
- To make formulas feel connected to movement and visuals
- To give teachers a simple classroom tool for showing concepts live
- To let students explore math instead of only memorizing steps
- Create points, segments, triangles, rectangles, circles, and polygons
- Drag shapes and watch measurements and formulas update live
- Show graph presets and custom equations
- Use sliders for
a,b,c, andt - Show intersections between active graphs
- Add constraints like parallel, perpendicular, equal-length, and midpoint lock
- Run guided lesson flows
- Save and load scenes
- Translate, rotate, scale, and mirror shapes
This project uses pygame-ce.
python -m pip install -r requirements.txtpython Main.py- Open the app.
- Use the left toolbar to choose a tool like
Select,Point, orSegment. - Click on the main graph area to build shapes.
- Switch back to
SelectwithVto move objects or drag handles. - Use the right side panels:
DETAILSshows measurements, formulas, constraints, and transform notes.GRAPHSshows sliders, starter graphs, and custom graph controls.LEARNshows lesson info, project goals, and improvement ideas. - Click the
>button on the right panel if you want to close it and give more space to the graph. - Open a panel again by clicking its name in the right side rail.
V: Select modeA: Point toolL: Segment toolT: Triangle toolR: Rectangle toolC: Circle toolP: Polygon toolEnter: Finish a polygonDelete: Delete selected shapeG: Toggle snap to gridH: Toggle helpI: Toggle graph intersections0: Reset cameraSpace: Load demo sceneEsc: Open pause menu/: Open commands screenJ: Open guided lessonsF: Open function builderTab: Animate slidert1: Toggle Linear graph2: Toggle Parabola graph3: Toggle Sine graph4: Toggle Quadratic Lab graphCtrl+S: Save sceneCtrl+O: Load sceneShift+Click: Pick comparison shapeCtrl+1: Parallel constraintCtrl+2: Perpendicular constraintCtrl+3: Equal-length constraintCtrl+4: Midpoint lockArrow Keys: Move selected shapeQ/E: Rotate selected shape-/=: Scale selected shapeX: Mirror across x-axisY: Mirror across y-axisO: Mirror across originN: Cycle next improvement ideas
The main idea of this project is simple: if a student can drag the math and see it react, then the formula starts making more sense by itself.
I didnt want this to feel like a calculator only. I wanted it to feel like a classroom lab where students can test what happens, make mistakes, and then understand why the math works.
This is the first public open source version of GeoLab Classroom.
If you want to use it in a school, improve the code, add lessons, or make the UI better, you are welcome to do that. I want this project to keep growing and helping more students from different places.
Main.py: Starts the appscripts/app/: App state, layout, rendering, theme, lessons, sliders, persistence, and UI helpersscripts/geometry/: Geometry models, graph presets, formulas, and math utilitiesrequirements.txt: Project dependencies



