This is the EnsinoLibre worksheet builder, the flagship app in the EnsinoLibre project. Teachers drag blocks onto a canvas to build, customize, and share worksheets.
Full guides live in ensinolibre/docs. This README covers the basics of running and understanding this repo.
There's no visual design to show yet. This repo is still a skeleton (see Quick start below), so screenshots will land here once the builder actually has a UI worth looking at.
git clone https://github.com/ensinolibre/core.git
cd core
npm install
npm run dev
The app opens at http://localhost:5173.
Note: this is currently a skeleton. The Palette, Canvas, and Inspector panes render placeholder content, not the real drag-and-drop builder. The project is in early bootstrapping, and this scaffold is the starting point for building out those features.
The stack is Vite, React, and TypeScript.
The intended data flow, once the placeholders become real:
- Palette (
src/components/Palette) lists the block types available to drag onto a worksheet. It reads this list from theblockspackage. - Canvas (
src/components/Canvas) holds the worksheet currently being built. Its state is aWorksheet, the type defined insrc/lib/worksheet-model.ts, and it's where drag-and-drop lands new blocks and reorders existing ones. - Inspector (
src/components/Inspector) edits whatever block is selected on the Canvas, by rendering that block's ownEditorcomponent from theblockspackage. - Share and grade (
src/lib/share.tsandsrc/lib/grading.ts) turn a finished worksheet into something a teacher can hand out and later grade. Both are stubs right now.
Worksheet blocks, things like multiple choice questions, fill-in-the-blank, and short answer, live in a separate package so they can be developed and versioned independently of the builder UI. See ensinolibre/blocks.
Design tokens and shared UI foundations (colors, spacing, base components) live in ensinolibre/design-system. This repo's package.json lists both @ensinolibre/blocks and @ensinolibre/design-system as dependencies. Those point at the versions published from their respective repos, so npm install won't resolve them until those packages are published.
See CONTRIBUTING.md for dev setup and code style. Good first issues are labeled good first issue.
Questions, ideas, or just want to say hello? Head to EnsinoLibre discussions.