Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mihanus/recipes

Implementation of a recipe database with a web-based interface implemented in Curry
https://github.com/mihanus/recipes

Last synced: 3 months ago
JSON representation

Implementation of a recipe database with a web-based interface implemented in Curry

Awesome Lists containing this project

README

        

A Recipe Database and Web Interface
===================================

This Curry package contains an implementation of a recipe database
together with a web-based interface. It is implemented in
[Curry](http://curry-lang.org/) and based on the
[web framework Spicey](https://www.informatik.uni-kiel.de/~pakcs/spicey/).

IMPORTANT NOTES:
----------------

1. Before you compile the generated web application for the first time,
execute the command

> make install

to install all packages required by this application
(where the executable `cypm` of the Curry Package Manager should
be in your path).

2. Before you deploy your web application, you should
define the variable WEBSERVERDIR in the `Makefile` according to
your desired location.

Then you can deploy your web application by the command

> make deploy

The directory structure of this package is as follows
(where is the name of your entity-relationship model).

* `src/Model/`
This directory contains the implementation of the data model, i.e.,
it contains the Curry module `.curry` implementing the access
to the database which are generated from the ER description.
In addition to the Curry program, this directory also contains
the Curry file of the original ER description (file `_ERD.curry`),
the term files of the transformed ER description (`_ERDT.term`),
and the info file `_SQLCode.info` which is used by
the Curry preprocessor when SQL queries are embedded in the source
code.

* `src/Controller/`
This directory contains the implementation of the various
controllers that are responsible to react on user interactions. It
also contains a module `AuthorizedControllers.curry` that contains the
authorization rules that should usually be adapted according to the
customer requirements.

* `src/View/`
This directory contains the implementation of the views of the
different entities. These views are called from the corresponding
controllers. Moreover, it also contains the module
`EntitiesToHtml.curry` which contains the code to translate all
entities into an HTML representation. Usually, this code should be
adapted according to the customer requirements.

* `src/Config/`
This directory contains modules to configure the overall access to
the functionality provided by the system. For instance, the
information about the routes, i.e., the URLs supported by the system
and their mapping to individual controllers, is defined in the
module `RoutesData.curry`. The module `ControllerMapping.curry` defines
the actual mapping of controller references to the operations
implementing the controllers. The module `UserProcesses.curry`
contains the definition of the processes that can be selected by the
user.

* `src/System/`
This directory contains global modules implementing session
management, authentication, authorization, user processes, etc.

* `public/`
This directory contains images and style files used by the installed
system.