This project started as a specific resource reservation system for the FutLab makerspace in Prague, with the following design document (Czech only).
It was written mainly during three live coding sessions and accompanied by posts on my blog.
Sadly, before the system could be deployed, the makerspace closed down, asi it could not survive the restriction imposed by the Czech government, supposedly to fight the Covid pandemic.
So I renamed the application, removed all the traces of FutLab from it and you may use it for your purposes.
ReP is a generic shared resource reservation system.
See this introduction video (in Czech)
- Resource can be almost anything, like a specific machine, specific room or area, anything that is supposed to be used by a single person at single time and you need to coordinate the users somehow.
- Users are the people who are using the shared resources. There are three types of users (three roles):
- Regular users can make, edit and delete their reservations, based on the options set by adminstrators (ie. the maximum length of reservation can be set for each resource).
- Masters can in addition edit or delete reservations of others and also can make their own reservations. They can also do so-called "system" reservations, which are not limited to the above constraints. System reservations are intended for example for maintenance etc.
- Administrators can in addition create, edit and delete shared resources, create, edit and delete users and manage opening hours.
In addition to its core task of managing shared resource usage, the system also has several features that may come handy:
- News for members, that can be published on the web site and (optionally) distributed to members via e-mail.
- Opening hours management. Default opening hours can be configured (for each day of week) and then exceptions can be made for specific dates.
- Directory, which can contain contact details of members and also other important records.
ReP can be deployed on premises or in the cloud. It's fairly standard ASP.NET Core web application.
- Web server supporting ASP.NET Core 7.0.
- Microsoft SQL Server (any supported version and edition), Azure SQL Database or Sqlite.
The configuration is stored in appsettings.json
. You can set the following configuration options:
Database
- eitherSqlite
orSqlServer
.ConnectionStrings
- connection strings:SqlServer
- connection string for Microsoft SQL Server or Azure SQL Database.Sqlite
- connection string for Sqlite.
Features
- turn application features on or off:UseOpeningHours
-true
orfalse
.UseNews
-true
orfalse
.UseMemberDirectory
-true
orfalse
.
Design
- design configuration:ApplicationName
- application name (title) used trough the application UI.HeaderImageUrl
- URL of image used in header instead of default one.StylesheetUrl
- URL of stylesheet used instead of default one.
Mailing
- outgoing e-mail configuration:PickupFolder
- path where.eml
files for sent messages are generated.SendGridApiKey
- API key for SendGrid. If not specified, mail pickup is used.SenderName
- sender display name.SenderAddress
- sender e-mail address.
OpeningHours
- array of opening hour specifications:DayOfWeek
- day name in English,Monday
toSunday
.OpeningTime
- opening time in this particular day of week.ClosingTime
- closing time in this particular day of week.
You might want to customize the following files to suit your needs:
- Styles:
wwwroot/Content/Styles/_vars.scss
- font family and accent color.wwwroot/Content/Styles/*.scss
- other styles.- Or use the
Design:StylesheetUrl
andDesign:HeaderImageUrl
configuration options.
- HTML:
Pages/_Layout.cshtml
- general page layout.
- E-mail:
Resources/Mailing/*/BodyTextFormatString.txt
- general message format, add common footer here.Resources/Mailing/*/*.txt
- text of e-mail messages.
This project aims to show localization features of ASP.NET Core and how to write internationalized features. I would like to have it translated to many different languages, especially some that use non-Latin characters.
Currently supported languages:
Locale | Language | Contributed by |
---|---|---|
cs-CZ |
Czech | Michal Altair Valášek |
en-GB |
English | Michal Altair Valášek |
fil-PH |
Filipino/Tagalog | Maribel Faderon |
Contributions are welcome, especially for the following languages:
- German (to test layout with longer words)
- Languages using non-Latin scripts (Chinese, Japanese, Korean, Thai, Russian, Ukrainian, Bulgarian...)
- Languages using right to left writing systems (Arabic, Hebrew)
If you want to contribute translation but do not know how, please contact me and I'll help you.
This project adheres to No Code of Conduct. We are all adults. We accept anyone's contributions. Nothing else matters.
For more information please visit the No Code of Conduct homepage.