Skip to content

ridercz/ReP

Repository files navigation

ReP - Rezervace Prostředků (Resource Reservation)

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.

Features

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.

Deploying the system

ReP can be deployed on premises or in the cloud. It's fairly standard ASP.NET Core web application.

Technical requirements

  • Web server supporting ASP.NET Core 7.0.
  • Microsoft SQL Server (any supported version and edition), Azure SQL Database or Sqlite.

Configuration

The configuration is stored in appsettings.json. You can set the following configuration options:

  • Database - either Sqlite or SqlServer.
  • 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 or false.
    • UseNews - true or false.
    • UseMemberDirectory - true or false.
  • 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 to Sunday.
    • OpeningTime - opening time in this particular day of week.
    • ClosingTime - closing time in this particular day of week.

Customization

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 and Design: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.

Translation

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.

Contributor Code of Conduct

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.