RabitHoleFramework
An experiment to see if I can build a web framework in Object Pascal.
- Active · last change 12-2-2025
- ★ 1 on GitHub
README
RabitHole Web Framework
The idea for creating this framework started after I created a custom website called Kevin's Rabit Hole, which was indeed a completely custom website build from the ground up, only using my jslib at most, which this framework will also make use of. I will eventually port my custom website to use this new framework once it's ready.
What is RabitHole Web Framework?
RabitHole Web Framework will be presented as an easy to use Lazarus package which is used alongside of the pas2js compiler. The framework will function very similar to how you might program a server-side application, but the catch with this framework, is that it will run entirely from inside the web browser. To update the content of the website, the developer would use an easy to use a local native desktop application running on their PC to create and update the website data, and then he or she can export this data into a compatible format for use with the framework. The framework will allow for both the bundling of all related data, this is good for websites that rarely change, or if you'd like to make it more difficult for web scrappers to take your content. The other and more straightforward method is to have these data files in an external JSON file which the application will load in upon starting. The biggest difference between the two methods being that if you bundle all your data into a single JavaScript module, you will always need to use Lazarus, or at least lazbuild to create a new version for the web. Whereas, if you choose to use external data sources, then just having the desktop app, and a means of updating the JSON files on the server is all that is needed.
It will support a few re-built databases which are general purpose, the other method is to update the desktop app with a new database, of which easy to follow tutorials will be provided to explain how to add a new table to the website.

