Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/harmim/vut-iis-project

Informační systémy - Projekt
https://github.com/harmim/vut-iis-project

iis information-systems nette-framework php7 vut vut-fit

Last synced: about 1 month ago
JSON representation

Informační systémy - Projekt

Awesome Lists containing this project

README

        

@font-face {
font-family: octicons-anchor;
src: url(https://cdnjs.cloudflare.com/ajax/libs/octicons/4.4.0/font/octicons.woff) format('woff');
}

* {
box-sizing: border-box;
}

body {
width: 980px;
margin-right: auto;
margin-left: auto;
}

body .markdown-body {
padding: 45px;
border: 1px solid #ddd;
border-radius: 3px;
word-wrap: break-word;
}

pre {
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
}

.markdown-body {
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
color: #333;
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-size: 16px;
line-height: 1.6;
word-wrap: break-word;
}

.markdown-body a {
background-color: transparent;
}

.markdown-body a:active,
.markdown-body a:hover {
outline: 0;
}

.markdown-body strong {
font-weight: bold;
}

.markdown-body h1 {
font-size: 2em;
margin: 0.67em 0;
}

.markdown-body img {
border: 0;
}

.markdown-body hr {
box-sizing: content-box;
height: 0;
}

.markdown-body pre {
overflow: auto;
}

.markdown-body code,
.markdown-body kbd,
.markdown-body pre {
font-family: monospace, monospace;
font-size: 1em;
}

.markdown-body input {
color: inherit;
font: inherit;
margin: 0;
}

.markdown-body html input[disabled] {
cursor: default;
}

.markdown-body input {
line-height: normal;
}

.markdown-body input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}

.markdown-body table {
border-collapse: collapse;
border-spacing: 0;
}

.markdown-body td,
.markdown-body th {
padding: 0;
}

.markdown-body input {
font: 13px / 1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}

.markdown-body a {
color: #4078c0;
text-decoration: none;
}

.markdown-body a:hover,
.markdown-body a:active {
text-decoration: underline;
}

.markdown-body hr {
height: 0;
margin: 15px 0;
overflow: hidden;
background: transparent;
border: 0;
border-bottom: 1px solid #ddd;
}

.markdown-body hr:before {
display: table;
content: "";
}

.markdown-body hr:after {
display: table;
clear: both;
content: "";
}

.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 15px;
margin-bottom: 15px;
line-height: 1.1;
}

.markdown-body h1 {
font-size: 30px;
}

.markdown-body h2 {
font-size: 21px;
}

.markdown-body h3 {
font-size: 16px;
}

.markdown-body h4 {
font-size: 14px;
}

.markdown-body h5 {
font-size: 12px;
}

.markdown-body h6 {
font-size: 11px;
}

.markdown-body blockquote {
margin: 0;
}

.markdown-body ul,
.markdown-body ol {
padding: 0;
margin-top: 0;
margin-bottom: 0;
}

.markdown-body ol ol,
.markdown-body ul ol {
list-style-type: lower-roman;
}

.markdown-body ul ul ol,
.markdown-body ul ol ol,
.markdown-body ol ul ol,
.markdown-body ol ol ol {
list-style-type: lower-alpha;
}

.markdown-body dd {
margin-left: 0;
}

.markdown-body code {
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-size: 12px;
}

.markdown-body pre {
margin-top: 0;
margin-bottom: 0;
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
}

.markdown-body .select::-ms-expand {
opacity: 0;
}

.markdown-body .octicon {
font: normal normal normal 16px/1 octicons-anchor;
display: inline-block;
text-decoration: none;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}

.markdown-body .octicon-link:before {
content: '\f05c';
}

.markdown-body:before {
display: table;
content: "";
}

.markdown-body:after {
display: table;
clear: both;
content: "";
}

.markdown-body>*:first-child {
margin-top: 0 !important;
}

.markdown-body>*:last-child {
margin-bottom: 0 !important;
}

.markdown-body a:not([href]) {
color: inherit;
text-decoration: none;
}

.markdown-body .anchor {
display: inline-block;
padding-right: 2px;
margin-left: -18px;
}

.markdown-body .anchor:focus {
outline: none;
}

.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 1em;
margin-bottom: 16px;
font-weight: bold;
line-height: 1.4;
}

.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #000;
vertical-align: middle;
visibility: hidden;
}

.markdown-body h1:hover .anchor,
.markdown-body h2:hover .anchor,
.markdown-body h3:hover .anchor,
.markdown-body h4:hover .anchor,
.markdown-body h5:hover .anchor,
.markdown-body h6:hover .anchor {
text-decoration: none;
}

.markdown-body h1:hover .anchor .octicon-link,
.markdown-body h2:hover .anchor .octicon-link,
.markdown-body h3:hover .anchor .octicon-link,
.markdown-body h4:hover .anchor .octicon-link,
.markdown-body h5:hover .anchor .octicon-link,
.markdown-body h6:hover .anchor .octicon-link {
visibility: visible;
}

.markdown-body h1 {
padding-bottom: 0.3em;
font-size: 2.25em;
line-height: 1.2;
border-bottom: 1px solid #eee;
}

.markdown-body h1 .anchor {
line-height: 1;
}

.markdown-body h2 {
padding-bottom: 0.3em;
font-size: 1.75em;
line-height: 1.225;
border-bottom: 1px solid #eee;
}

.markdown-body h2 .anchor {
line-height: 1;
}

.markdown-body h3 {
font-size: 1.5em;
line-height: 1.43;
}

.markdown-body h3 .anchor {
line-height: 1.2;
}

.markdown-body h4 {
font-size: 1.25em;
}

.markdown-body h4 .anchor {
line-height: 1.2;
}

.markdown-body h5 {
font-size: 1em;
}

.markdown-body h5 .anchor {
line-height: 1.1;
}

.markdown-body h6 {
font-size: 1em;
color: #777;
}

.markdown-body h6 .anchor {
line-height: 1.1;
}

.markdown-body p,
.markdown-body blockquote,
.markdown-body ul,
.markdown-body ol,
.markdown-body dl,
.markdown-body table,
.markdown-body pre {
margin-top: 0;
margin-bottom: 16px;
}

.markdown-body hr {
height: 4px;
padding: 0;
margin: 16px 0;
background-color: #e7e7e7;
border: 0 none;
}

.markdown-body ul,
.markdown-body ol {
padding-left: 2em;
}

.markdown-body ul ul,
.markdown-body ul ol,
.markdown-body ol ol,
.markdown-body ol ul {
margin-top: 0;
margin-bottom: 0;
}

.markdown-body li>p {
margin-top: 16px;
}

.markdown-body dl {
padding: 0;
}

.markdown-body dl dt {
padding: 0;
margin-top: 16px;
font-size: 1em;
font-style: italic;
font-weight: bold;
}

.markdown-body dl dd {
padding: 0 16px;
margin-bottom: 16px;
}

.markdown-body blockquote {
padding: 0 15px;
color: #777;
border-left: 4px solid #ddd;
}

.markdown-body blockquote>:first-child {
margin-top: 0;
}

.markdown-body blockquote>:last-child {
margin-bottom: 0;
}

.markdown-body table {
display: block;
width: 100%;
overflow: auto;
word-break: normal;
word-break: keep-all;
}

.markdown-body table th {
font-weight: bold;
}

.markdown-body table th,
.markdown-body table td {
padding: 6px 13px;
border: 1px solid #ddd;
}

.markdown-body table tr {
background-color: #fff;
border-top: 1px solid #ccc;
}

.markdown-body table tr:nth-child(2n) {
background-color: #f8f8f8;
}

.markdown-body img {
max-width: 100%;
box-sizing: content-box;
background-color: #fff;
}

.markdown-body code {
padding: 0;
padding-top: 0.2em;
padding-bottom: 0.2em;
margin: 0;
font-size: 85%;
background-color: rgba(0,0,0,0.04);
border-radius: 3px;
}

.markdown-body code:before,
.markdown-body code:after {
letter-spacing: -0.2em;
content: "\00a0";
}

.markdown-body pre>code {
padding: 0;
margin: 0;
font-size: 100%;
word-break: normal;
white-space: pre;
background: transparent;
border: 0;
}

.markdown-body .highlight {
margin-bottom: 16px;
}

.markdown-body .highlight pre,
.markdown-body pre {
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border-radius: 3px;
}

.markdown-body .highlight pre {
margin-bottom: 0;
word-break: normal;
}

.markdown-body pre {
word-wrap: normal;
}

.markdown-body pre code {
display: inline;
max-width: initial;
padding: 0;
margin: 0;
overflow: initial;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}

.markdown-body pre code:before,
.markdown-body pre code:after {
content: normal;
}

.markdown-body kbd {
display: inline-block;
padding: 3px 5px;
font-size: 11px;
line-height: 10px;
color: #555;
vertical-align: middle;
background-color: #fcfcfc;
border: solid 1px #ccc;
border-bottom-color: #bbb;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #bbb;
}

.markdown-body .pl-c {
color: #969896;
}

.markdown-body .pl-c1,
.markdown-body .pl-s .pl-v {
color: #0086b3;
}

.markdown-body .pl-e,
.markdown-body .pl-en {
color: #795da3;
}

.markdown-body .pl-s .pl-s1,
.markdown-body .pl-smi {
color: #333;
}

.markdown-body .pl-ent {
color: #63a35c;
}

.markdown-body .pl-k {
color: #a71d5d;
}

.markdown-body .pl-pds,
.markdown-body .pl-s,
.markdown-body .pl-s .pl-pse .pl-s1,
.markdown-body .pl-sr,
.markdown-body .pl-sr .pl-cce,
.markdown-body .pl-sr .pl-sra,
.markdown-body .pl-sr .pl-sre {
color: #183691;
}

.markdown-body .pl-v {
color: #ed6a43;
}

.markdown-body .pl-id {
color: #b52a1d;
}

.markdown-body .pl-ii {
background-color: #b52a1d;
color: #f8f8f8;
}

.markdown-body .pl-sr .pl-cce {
color: #63a35c;
font-weight: bold;
}

.markdown-body .pl-ml {
color: #693a17;
}

.markdown-body .pl-mh,
.markdown-body .pl-mh .pl-en,
.markdown-body .pl-ms {
color: #1d3e81;
font-weight: bold;
}

.markdown-body .pl-mq {
color: #008080;
}

.markdown-body .pl-mi {
color: #333;
font-style: italic;
}

.markdown-body .pl-mb {
color: #333;
font-weight: bold;
}

.markdown-body .pl-md {
background-color: #ffecec;
color: #bd2c00;
}

.markdown-body .pl-mi1 {
background-color: #eaffea;
color: #55a532;
}

.markdown-body .pl-mdr {
color: #795da3;
font-weight: bold;
}

.markdown-body .pl-mo {
color: #1d3e81;
}

.markdown-body kbd {
display: inline-block;
padding: 3px 5px;
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
line-height: 10px;
color: #555;
vertical-align: middle;
background-color: #fcfcfc;
border: solid 1px #ccc;
border-bottom-color: #bbb;
border-radius: 3px;
box-shadow: inset 0 -1px 0 #bbb;
}

.markdown-body .plan-price-unit {
color: #767676;
font-weight: normal;
}

.markdown-body .task-list-item {
list-style-type: none;
}

.markdown-body .task-list-item+.task-list-item {
margin-top: 3px;
}

.markdown-body .task-list-item input {
margin: 0 0.35em 0.25em -1.6em;
vertical-align: middle;
}

.markdown-body .plan-choice {
padding: 15px;
padding-left: 40px;
display: block;
border: 1px solid #e0e0e0;
position: relative;
font-weight: normal;
background-color: #fafafa;
}

.markdown-body .plan-choice.open {
background-color: #fff;
}

.markdown-body .plan-choice.open .plan-choice-seat-breakdown {
display: block;
}

.markdown-body .plan-choice-free {
border-radius: 3px 3px 0 0;
}

.markdown-body .plan-choice-paid {
border-radius: 0 0 3px 3px;
border-top: 0;
margin-bottom: 20px;
}

.markdown-body .plan-choice-radio {
position: absolute;
left: 15px;
top: 18px;
}

.markdown-body .plan-choice-exp {
color: #999;
font-size: 12px;
margin-top: 5px;
}

.markdown-body .plan-choice-seat-breakdown {
margin-top: 10px;
display: none;
}

.markdown-body :checked+.radio-label {
z-index: 1;
position: relative;
border-color: #4078c0;
}

@media print {
body .markdown-body {
padding: 0;
border: none;
}
}
README


Informační systémy - Projekt



Půjčovna kostýmů (založeno na zadání č. 10 z kursu IUS)



Autoři




Dokumentace


Dokumentace projektu se nachází v ./doc/doc.html.



Databáze


SQL skript pro inicializaci schématu databáze se nachází v ./sql/create_db.sql.



Struktura projektu




  • ./app/ Jádro systému. PHP skripty a třídy, konfigurační NEON soubory. Latte šablony.


    • ./app/config/ Konfigurační NEON soubory systému.


    • ./app/*Module/ Jednotlivé moduly systému. Tento adresář obsahuje konfigurační NEON soubor pro daný modul,
      adresář Controls pro komponenty, Model pro modelové třídy, Presenters pro presentery (kontrolery) a
      templates pro Latte šablony.


    • ./app/bootstrap.php výchozí skript s nastavením konfigrace celého systému.




  • ./doc/ Dokumentace.


  • ./docker/ Nastavení Docker.


  • ./libs/ PHP třídy, které modifikují nebo rozšiřují chování Nette framework.


  • ./log/ Chybové záznamy systému ("logy").


  • ./node_modules/ JavaScript knihovny nainstalované přes NPM. Slouží k nastavení a stahování JavaScript a CSS
    závislostí systému.


  • ./sql/ SQL skripty.


    • ./sql/create_db.sql Skript pro inicializaci databáze.




  • ./temp/ Dočasné soubory systému.


  • ./vednor/ PHP knihovny nainstalované přes Composer.


  • ./www/ Kořenový adresář přístupný z webu.


    • ./www/img/ Obrázky.


    • ./www/js/ JavaScript skripty.


    • ./www/styles/ CSS soubory.


    • ./www/index.php Výchozí PHP skript spuštěný při spuštění systému.




  • ./.bowerrc Konfigurace nástroje Bower použitého na stahování JavaScript a CSS závislostí systému.


  • ./.gitignore Ignorované soubory verzovacím systémem Git.


  • ./.htaccess Výchozí konfigurace webového serveru Apache pro celý systém.


  • ./bower.json Definice používaných JavaScript a CSS knihoven nástrojem Bower.


  • ./coding-standard.yml Nastavení nástroje nette/coding-standard pro kontrolu stylu PHP kódu.


  • ./composer.json Definice používaných PHP knihoven, verze PHP a způsobu automatického načítání PHP souborů
    nástrojem Composer.


  • ./composer.lock Pomocný soubor pro nástroj Composer.


  • ./docker-compose.override.sample.yml Vzorový konfigurační soubor pro lokální modifikaci konfigurace Docker.


  • ./docker-compose.yml Konfigurační soubor pro Docker.


  • ./Gruntfile.js JavaScript skript pro správu a stahování JavaScript a CSS závislostí systému.
    (Konfigurační soubor nástroje Grunt.)


  • ./LICENSE Licence.


  • ./Makefile Soubor pro správu systému programem make.


  • ./package.json Definice používaných JavaScript knihoven pro stahování JavaScript a CSS závislostí systému
    nástrojem NPM.


  • ./package-lock.json Pomocný soubor pro nástroj NPM.


  • ./phpstan.neon Nastavení nástroje phpstan pro statickou analýzu PHP kódu.


  • ./README.md README se základními informacemi o systému.


  • ./README.html README ve formátu HTML.



Požadavky (obecné)




  • Git. (Pro stažení repositáře.)



Požadavky (bez použití Docker)



  • Webový server, např. Apache nebo Nginx +
    MySQL nebo MariaDB +
    PHP >= 7.2. Možno nainstalovat zvlášť nebo nainstalovat
    XAMPP nebo třeba WAMP.


  • Composer. (Pro správu PHP zavislostí.)


  • NodeJS. (Pro správu JavaScript balíčků pro stahování JavaScript a CSS knihoven.)



Požadavky (s použitím Docker)




Nastavení (obecné)



Nastavení DNS



  • Doména vut-iis-project.localhost.com musí směrovat na localhost (127.0.0.1).
    Lze to udělat např. editací souboru /etc/hosts, respektive (C:\Windows\System32\Drivers\etc\hosts).
    Nebo je možné použít program dnsmasq kde je možné
    nastavit, aby celé skupiny domén směrovaly na localhost, např. všechny domény, které mají ve svém
    názvu řetězec localhost. Návod pro Mac.
    Nebo je také možné nainstalovat si dnsmasq přes Docker.



Stažení repositáře


Přes SSH


$ git clone [email protected]:harmim/vut-iis-project.git ~/cesta/k/repositari


nebo přes HTTPS.


$ git clone https://github.com/harmim/vut-iis-project.git ~/cesta/k/repositari



Nastavení (bez použití Docker)



Nastavení virtual host


V konfiguračím souboru Apache, např. /usr/local/etc/httpd/extra/httpd-vhosts.conf.


<VirtualHost *:80>

ServerName vut-iis-project.localhost.com
DocumentRoot "~/cesta/k/repositari"
SetEnv IIS_DEBUG 1
</VirtualHost>


Nastavení (s použitím Docker)



Nginx-proxy


Nastavení Nginx proxy serveru, přes který se budeme připojovat k systému a který bude proxy na Apach server.



  1. Vytvoření souboru ~/docker-compose.yml např. v domovském adresáři:


version: '3'

services:
nginx-proxy:
image: jwilder/nginx-proxy
ports:
- 80:80
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: always

networks:
default:
external:
name: nginx-proxy






$ docker network create nginx-proxy






$ (cd ~ && docker-compose up -d)


Tato Nginx proxy se teď bude spouštět vždy po restartu Docker automaticky.



Instalace (bez použití Docker)


$ make DOCKER=0



Nastavení vlastní databáze






$ cp app/config/local.sample.neon app/config/local.neon



  1. Nastavení údajů k vlastní databázi v souboru app/config/loocal.neon.



Instalace (s použitím docker)






$ cp docker-compose.override.sample.yml docker-compose.override.yml




  1. Změna konfigurace v souboru docker-compose.override.yml, např. nastavení XDEBUG_CONFIG na
    docker.for.win.localhost pro Windows.






$ docker-compose up -d


(pro vypnutí Docker kontejneru $ docker-compose down)






$ make



Make příkazy


U každého příkazu je možné uvést DOCKER=1/0 pro používání/nepoužívaní Docker, např. $ make install DOCKER=0.
Výchozí hodnota je 1.


U kažédho příkazu je možné uvést PRODUCTION=1/0 pro nastavení knihoven pro produkční/vývojový server,
např. $ make install PRODUCTION=1. Výchozí hodnota je 0.




  • install composer + assets. Výchozí cíl.


  • composer Instalace PHP knihoven a vygenerování souboru pro automatické načítání PHP souborů.


  • assets npm + bower + grunt.


  • npm Instalace JavaScript knihoven přes NPM pro nastavování a stahování JavaScript a CSS knihoven systému.


  • bower Instalace JavaScript a CSS knihoven přes Bower.


  • grunt Kopírování a nastavování (minifikace, aj.) JavaScript a CSS knihoven systému.


  • code-checker Spuštění kontroly validity PHP kódu.


  • coding-standard Spuštění kontroly stylu PHP kódu.


  • phpstan Spuštění statické analýzy PHP kódu.


  • clean Odstranení všech dočasných souborů.


  • clean-cache Ostranění dočasných souborů Nette framework.


  • pack Vytvoření archívu pro odevzdání.