# What's next

> You've finished the course. Here's where to go from here.

This is the Markdown version of https://osl-lang.org/learn/next. Every page of the OSL docs has one: add .md to its path. https://osl-lang.org/llms.txt lists them all.

You've covered the whole language: values and types, control flow, functions, your own types, errors, iterators, modules, threads, tests and Go. That's everything you need to write real programs.

## Build something

The fastest way to get good at a language is to make something with it. Each project is a step-by-step tutorial that starts from an empty file:

- [Build a command-line tool](/build/cli-tool.md): Build `todo`, a command-line task list that keeps its data in a JSON file, then compile it into a program you can run from anywhere.
- [Build a web API](/build/web-api.md): Build Shorty, a link shortener with a JSON API, redirects, validation, visit counts and a token-protected route group.
- [Build a realtime chat](/build/realtime-chat.md): Build a chat room with `std:serve` and `std:ws`: WebSocket handlers, nicknames kept on each connection, JSON messages, broadcast and a browser page.
- [Build a desktop app](/build/desktop-app.md): Build a pomodoro timer with `std:ui` and `std:window`: a class with state and actions, a view in tags, styles and a theme, then show it on the web and in a window.
- [Build a game](/build/game.md): Build Snake with `std:raylib`, keeping the rules in plain code you can run and test as text, and drawing the board in a window at the end.
- [Build a terminal dashboard](/build/terminal-dashboard.md): Build a live terminal dashboard with `std:tui`: progress bars, tables, boxes and charts as text, a model you can test, and a redraw loop that reads keys.
- [Build a chat bot](/build/chat-bot.md): Build a dice and trivia bot for originChats: command handling you can test as plain functions, embeds and polls, then wire it to a server.

## Explore the standard library

OSL ships with packages for servers, databases, files, images, games, cryptography and more. Each [package page](/packages.md) starts with a tutorial and ends with every function the package has.

## Look things up

The [reference](/reference.md) is for when you know what you want and need the exact details: every operator, every built-in method, the command line, Opal and every compiler diagnostic.

## Keep a playground open

The [playground](/playground.md) runs the real compiler in your browser. It's the quickest way to try an idea, and a link to it shares your code.

## Get involved

OSL is open source. The compiler, the standard library and these docs all welcome fixes and ideas:

- The compiler: [git.rotur.dev/osl/.go](https://git.rotur.dev/osl/.go)
- These docs: [github.com/Mistium/OSL-Docs](https://github.com/Mistium/OSL-Docs)
