Getting Started - PaulaUpb/ProjectPaula GitHub Wiki
PAULa relies on a couple of key technologies:
- .NET Core 1.1 + C# for the backend
- Entity Framework + SQLite for data persistence
- HTML/CSS/JS with Bootstrap and angular-js for the frontend
- SignalR for server-client communication (basically remote procedure calls)
- Docker for deployment
The most important class to maintain is the PaulParser. It is responsible for browsing through PAUL's search results to retrieve all publicly available courses and updating the database. The database tables can be found in the DatabaseContext.
A database update is triggered every night or on demand by sending a GET request to /Paul/UpdateAllCourses
. Logs for this process can be found at /Paul/GetLogs
, as can be seen in PaulController. In production, these are password protected by an nginx proxy.
The same file is also responsible for providing a lightweight API that is used by a couple of services.
On the client-side, the most important JavaScript code resides in timetableController.js. Together with its C#-counterpart TimetableHub, it implements the server-client-communication including automatic object synchronization.
HTML files (with mixed-in C# code) can be found in the Views directory. The main layout is stored in the shared _Layout.cshtml file.
Anything mentioning a chat can be safely ignored. No such feature has actually been implemented.
Entrypoints
The Dockerfile sets up the environment and exposes an HTTP server on port 50000. It launches Program.Main which in turn sets up the HTTP server that then uses Startup for a second configuration phase.
IDEs
You can use Visual Studio or JetBrains Rider (free for students) for development. Visual Studio Code may also work.