Skip to content

Commit

Permalink
help documentation added and v1 released
Browse files Browse the repository at this point in the history
  • Loading branch information
alecxcode committed Jul 1, 2022
1 parent 8540bbc commit 4edb4dc
Show file tree
Hide file tree
Showing 8 changed files with 210 additions and 21 deletions.
115 changes: 115 additions & 0 deletions assets/manual-admin.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
<!DOCTYPE html>
<head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>EDM: User documentation</title>
<link rel="shortcut icon" href="favicon.png">
<link rel="stylesheet" href="fonts.css">
<link rel="stylesheet" href="system-rust.css">
</head>
<body><div id="container">
<div id="control">
<div class="center somemargins">
<a class="sbut smaller inline-block" href="/">EDM System Home</a>
<a class="sbut smaller inline-block" href="manual.html">User documentation</a>
<strong class="panel smaller inline-block">Administrator documentation</strong>
</div>
<h1>Administrator documentation</h1>
</div>
<div id="main">

<p>Please, read <a href="manual.html">user documentation</a> before this administrator documentation in order to understand some basic concepts.</p>

<h2 class="margintop">Technical Description</h2>
<p>This software utilizes <a href="https://go.dev/">Go</a> programming language, <a href="https://github.com/alecxcode/sqla">sqla</a> module and drivers for each database type to directly connect to a database server.</p>
<p>Probably all platforms where Go programming language is available are supported (Linux, Mac, Windows, etc.).</p>
<p>The software should be installed on a server machine and configured to use a database management system selected by you.</p>
<p>The following RDBMS are supported:</p>
<ul>
<li>SQLite</li>
<li>Microsoft SQL Server</li>
<li>MySQL(MariaDB)</li>
<li>Oracle</li>
<li>PostgreSQL</li>
</ul>
<p>On the client-side it is necessary to use modern web browsers like Chrome, Firefox, Safari with enabled JavaScript. Internet Exprorer is not supported.</p>
<p>Basic bruteforce protection by default blocks login capability for any users from any IP addresses for 60 minutes after 100 attempts to enter with wrong login or password.</p>

<h2 class="margintop">Installation of a release package</h2>
<p>Installing in Windows is easy: run the downloaded distribution file, select a folder to install, and then it runs automatically. This way of installation is more for presentation purposes.</p>
<p>On Linux/Mac/BSD: unpack the app somewhere and run <code>./edm</code> executable. If there is no build for your system or it does not work, you need to build it yourself. It is recommended to create a separate user for the server (e.g. with the name <code>edm</code>), like for other servers and configure the software as a service on your system. You should refer to your system administration guides or manuals about how to do that.</p>
<p>Default login after installation: <b>admin</b>, and the password is empty (there is no password).</p>

<h2 class="margintop">Configuration file</h2>
<p>Configuration file by default is located in the <b>.edm</b> directory of a user home directory. The name of this file is <b>edm-system.cfg</b>.</p>
<p>If there is no configuration file found on launch, the file will be created with default values.</p>
<p>Every line consists of option name and option value which are separated by <code>=</code> sign. Wrong option names, lines started with <code>#</code> are ignored.</p>
<p>The following options are available:</p>
<p><code>ServerSystem</code> - path where all static files (templates, themes, etc.) are located. Not writable. Default is <code>.</code> (current directory).</p>
<p><code>ServerRoot</code> - path where server modifiable files (uploads, logs, etc.) are stored. Should be writable. Default is <code>.edm</code></p>
<p><code>ServerHost</code> - ip address to bind the server process. Default is <code>127.0.0.1</code>. To bind the server to all interfaces make this option empty.</p>
<p><code>ServerPort</code> - server process port. Default is <code>8090</code>.</p>
<p><code>DomainName</code> - domain name of your system. It is used in email notifications.</p>
<p><code>DefaultLang</code> - default server language which is used on login page, in emails, by newly created user profiles. Use one of these two-letter codes:
<code>en</code>,
<code>es</code>,
<code>fr</code>,
<code>ru</code>.</p>
<p><code>StartPage</code> - default "base" page to display after logged-in user opens the system url. Use one of these:
<code>docs</code>,
<code>tasks</code>,
<code>team</code>.</p>
<p><code>RemoveAllowed</code> - permission for owners to delete their objects: <code>true</code> or <code>false</code>.</p>
<p><code>RunBrowser</code> - should the server run a browser on launch: <code>true</code> or <code>false</code>.</p>
<p><code>UseTLS</code> - whether or not to use https: <code>true</code> or <code>false</code>.</p>
<p><code>SSLCertFile</code> - specify certificate file path if UseTLS is set to true.</p>
<p><code>SSLKeyFile</code> - specify key file path if UseTLS is set to true.</p>
<p><code>CreateDB</code> - if set to true the server will create database tables to initialize empty database. Usually should not be used.</p>
<p><code>DBType</code> - specifies RDBMS type. Might be one of these:
<code>sqlite</code>,
<code>mssql</code> or <code>sqlserver</code>,
<code>mysql</code> or <code>mariadb</code>,
<code>oracle</code>,
<code>postgresql</code> or <code>postgres</code>.</p>
<p><code>DBName</code> - database name to connect. For Oracle it is a service name.</p>
<p><code>DBHost</code> - host address of the database server.</p>
<p><code>DBPort</code> - port of the database server.</p>
<p><code>DBUser</code> - database user to connect.</p>
<p><code>DBPassword</code> - password of the database user.</p>
<p><code>SMTPEmail</code> - email address to use in notification emails.</p>
<p><code>SMTPHost</code> - SMTP server host address. Should be specified in order to make notifications work properly.</p>
<p><code>SMTPPort</code> - SMTP server port. Should be specified in order to make notifications work properly.</p>
<p><code>SMTPUser</code> - SMTP server user. Should be specified in order to make notifications work properly.</p>
<p><code>SMTPPassword</code> - SMTP server password. Should be specified in order to make notifications work properly.</p>

<h2 class="margintop">Command line arguments</h2>
<p>Command-line arguments have higher priority over (overwrite) configuration file values.</p>
<p><code>--createdb</code> - the server will create database table to initialize empty database.</p>
<p><code>--filldb</code> - fill database with showcase data. Useful only for presentation and testing.</p>
<p><code>--nobrowser</code> - the server should not run a browser on launch.</p>
<p><code>--consolelog</code> - print messages to console instead of a log file.</p>

<h2 class="margintop">Building from source</h2>
<p>The simplest way to build the software is to run <code>go build</code> command, and then you can run <code>./edm</code> (<code>edm.exe</code> for windows) app in the current directory.</p>
<p>You should have Go compiler and C compiler (like one supplied with GCC or MinGW) on your system installed.</p>
<p><b>Dockerfile</b> and <b>docker-compose.yml</b> files are available to run the software with Docker.</p>
<p><b>build-release.cmd</b> and <b>build-release.sh</b> are for building a smaller executable with some flags.</p>
<p><b>addicon.cmd</b> is for adding the program icon into the exe file in Windows - this requires <a href="http://angusj.com/resourcehacker/">Resource Hacker</a> on your system.</p>
<p><b>run-unix.sh</b> is a more convenient way to run the software while developing it.</p>
<p>In order to know some constants and structs of the app read the package documentation available in source files, for example with <code>go doc --all</code> command.</p>
<p>If you add some structs which requires creating tables in a database, you can use <code>go generate</code> command to run <b>sql-gen.py</b> python script to create sql scripts. This runs python3 and requires it to be installed on your system.</p>
<p>If you modify server config code, you can use <code>go generate</code> command to run <b>config-gen.py</b> python script to rewrite config loading and saving functions. This runs python3 and requires it to be installed on your system.</p>
<p>All compilers, interpreters, executables which are necessary to build the software should be available in a path variable of you environment.</p>
<h3 class="margintop">Themes</h3>
<p>Any theme is a single css file which name starts with <b>theme-</b> prefix and which is located in the <b>assets</b> directory.</p>
<p>To add a new theme you need to create that file with selectors like in other files. Theme list is defined in <code>main()</code> function of the program. You need to add theme name to the list, and rebuild the application.</p>
<h3 class="margintop">Localization</h3>
<p>There are two JSON files wich contain language-specific strings. Name of these files is two-letter language code and .json extension.
Server-side files are located in <b>i18nserver</b> directory, and they are relatively small as they are used only for login page and email notifications.
Frontend localization files are located in <b>assets/i18n</b> directory, and they contain a lot more strings, almost everything user interface language. Users can easily switch their interface language on settings page.
</p>
<p>To add a new language you need to create those two JSON files with the same structure as existing files. Language codes list is defined in <code>main()</code> function of the program. You need to add language code to the list, and rebuild the application. You also need to edit <b>config.tmpl</b> file to add a language name there.</p>

</div>
<div id="bottom">© 2022 <a href="https://github.com/alecxcode/edm" target="_blank">EDM Project</a></div>
</div></body></html>
51 changes: 51 additions & 0 deletions assets/manual.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<!DOCTYPE html>
<head><meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>EDM: User documentation</title>
<link rel="shortcut icon" href="favicon.png">
<link rel="stylesheet" href="fonts.css">
<link rel="stylesheet" href="system-rust.css">
</head>
<body><div id="container">
<div id="control">
<p class="center somemargins">
<a class="sbut smaller" href="/">EDM System Home</a>
<strong class="panel smaller">User documentation</strong>
<a class="sbut smaller" href="manual-admin.html">Administrator documentation</a>
</p>
<h1>User documentation</h1>
</div>
<div id="main">
<h2 class="margintop">Application Description</h2>
<p>This software is an electronic document management and task tracking multiuser web-based environment.</p>
<p>Usually is it easy to use and user experience is quite intuitive, so this manual is only to clarify some functions.</p>
<p>Every separate group of elements which have a title in the navigation bar is called in this project the "base".</p>
<h2 class="margintop">Basic setup and logging in</h2>
<p>This software requires that you use modern web browsers, like Chrome, Firefox, Safari with enabled JavaScript. If you experience corrupted displaying of content, not functioning controls, etc., please verify that your browser is up to date.</p>
<p>You need only a browser and a link to a website with installed EDM server to use the software. Your login name and password should be obtained from your system administrator. Use them exactly as they are. You can change them on your profile page.</p>
<h2 class="margintop">Permissions in general</h2>
<p>Users profiles in the system may have administrator role or may have no role. Only administrators can create, delete, edit other user profiles and companies. Users can edit their own profiles. </p>
<p>Users with no role can create other objects: documents, tasks. Creator of an object becomes its owner.</p>
<p>Only creators (owners) can edit and delete their objects. Administrator may on a server level disable the permission to delete objects even for owners.</p>
<p>It is strongly advised not to delete anything, as someone my post links to your objects somewhere else.</p>
<p>All users can view any objects.</p>
<h2 class="margintop">User profiles, companies, settings</h2>
<p>User profile represent a person who use the software. There is a list of registered users (Team base), from where it is available a list of companies.</p>
<p>Each user profile has a set of configuration options available on the setting page. They are easy to understand. It is recommended to review them to make your experience more handy and convenient.</p>
<p>Companies are created by administrator and they may include units (departments). A user may be an employee of a unit and, therefore, of a respective company.</p>
<h2 class="margintop">Documents</h2>
<p>Document is an object which represents a document from the real world. </p>
<p>Documents base may be used to register and store company contracts with all their addenda, incoming and outgoing letters, any internal, corporate regulations, etc.</p>
<h2 class="margintop">Tasks</h2>
<p>Task is an object representing a separate job or a task process from the real world, where one or several people do something, discuss it, attach files, etc.</p>
<p>A task has a creator (owner) who initiated it, an assignee who is the main person responsible for task to be done, and other participants, who may do part of the job, or approve, or discuss the process.</p>
<p>Task commenting is only available to creators, assignees and participants of the task.</p>
<p>Task creators or assignees can forward task to another assignee, add participants, change task status.</p>
</div>
<div id="bottom">
<span>© 2022 <a href="https://github.com/alecxcode/edm" target="_blank">EDM Project</a></span>
<span>v1.0.0.</span>
<span><a href="/assets/manual.html">Manual</a></span>
</div>
</div></body></html>
16 changes: 8 additions & 8 deletions assets/system-dark.css
Original file line number Diff line number Diff line change
Expand Up @@ -116,14 +116,14 @@ h2 {
text-align: center;
}
.somemargins {
margin-top: 6px;
margin-bottom: 6px;
margin-top: 9px;
margin-bottom: 9px;
}
.margintop {
margin-top: 6px;
margin-top: 9px;
}
.marginbottom {
margin-top: 6px;
margin-bottom: 9px;
}
input[type=text], input[type=button], input[type=submit], button {
-webkit-appearance: none;
Expand Down Expand Up @@ -204,9 +204,6 @@ a.sbut, a.sbut:active, a.sbut:visited {
background-color: #c22;
border: 1px solid #500;
}
.smaller {
padding: 2px 4px;
}
.nowrap {
white-space: nowrap;
}
Expand All @@ -224,6 +221,9 @@ a.sbut, a.sbut:active, a.sbut:visited {
.inline-block {
display: inline-block;
}
.smaller, .smaller:hover, .smaller:focus {
padding: 2px 4px;
}

/* other things */
#stat {
Expand All @@ -239,4 +239,4 @@ input:disabled, .numberbox:disabled, .sbut:disabled, .field:disabled {
background-color: #333 !important;
border: 1px solid #555 !important;
box-shadow: none;
}
}
23 changes: 13 additions & 10 deletions assets/system-rust.css
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ body {
pre, code {
font-family: 'Courier New', Courier, monospace;
overflow-x: auto;
background-color: #f0f0e0;
padding: 1px 3px;
border-radius: calc(var(--elements-radius) * 2);
}

#container {
Expand Down Expand Up @@ -51,7 +54,7 @@ pre, code {
}
a, a:visited {
text-decoration: none;
color: #500;
color: #903;
}
a:hover, a:focus {
text-decoration: underline;
Expand Down Expand Up @@ -89,7 +92,7 @@ a:hover, a:focus {
outline: 0;
}
h1 {
color: #605959;
color: #3d3939;
font-size: 22px;
font-weight: bold;
margin-bottom: 10px;
Expand All @@ -115,14 +118,14 @@ h2 {
text-align: center;
}
.somemargins {
margin-top: 6px;
margin-bottom: 6px;
margin-top: 9px;
margin-bottom: 9px;
}
.margintop {
margin-top: 6px;
margin-top: 9px;
}
.marginbottom {
margin-top: 6px;
margin-bottom: 9px;
}
input[type=text], input[type=button], input[type=submit], button {
-webkit-appearance: none;
Expand Down Expand Up @@ -203,9 +206,6 @@ a.sbut, a.sbut:active, a.sbut:visited {
background-color: #c22;
border: 1px solid #500;
}
.smaller {
padding: 2px 4px;
}
.nowrap {
white-space: nowrap;
}
Expand All @@ -223,6 +223,9 @@ a.sbut, a.sbut:active, a.sbut:visited {
.inline-block {
display: inline-block;
}
.smaller, .smaller:hover, .smaller:focus {
padding: 2px 4px;
}

/* other things */
#stat {
Expand All @@ -238,4 +241,4 @@ input:disabled, .numberbox:disabled, .sbut:disabled, .field:disabled {
background-color: #333 !important;
border: 1px solid #555 !important;
box-shadow: none;
}
}
8 changes: 7 additions & 1 deletion memorydb.go
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,13 @@ func getLoginTemplate() *template.Template {
<div><label for="loginName" style="display: inline-block; width: 80px;">{{.LoninFieldLabel}}</label> <input id="loginName" type="text" size="15" class="field" name="loginName" placeholder="" value=""></div>
<div><label for="loginPasswd" style="display: inline-block; width: 80px;">{{.PasswordFieldLabel}}</label> <input id="loginPasswd" type="password" size="15" class="field" name="loginPasswd" placeholder="" value=""></div>
<br><input type="submit" class ="sbut" name="loginButton" value="{{.LoginButton}}"><br>
</form></div><div id="bottom">© 2022 <a href="https://github.com/alecxcode/edm" target="_blank">EDM Project</a></div></div></body></html>`
</form></div>
<div id="bottom">
<span>© 2022 <a href="https://github.com/alecxcode/edm" target="_blank">EDM Project</a></span>
<span>v1.0.0.</span>
<span><a href="/assets/manual.html">Manual</a></span>
</div>
</div></body></html>`
return template.Must(template.New("login").Parse(logintmpl))
}

Expand Down
6 changes: 5 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@ The application has the following functions:
* Some basic bruteforce protection
* Other functions, not mentioned in this list

Supported themes: dark, light, monochrome-dark, monochrome-light.
Supported languages: English, Spanish, French, Russian.

## How to build and run
To build use Go (Golang) programming language, run `go build`, and then you can run `./edm` (`edm.exe` for windows) app in the current directory. If you build the application and run locally, by default it immediately opens the browser, so you can start using it. Default login: **admin**, default password: **no password**.
To build use Go (Golang) programming language, run `go build`, and then you can run `./edm` (`edm.exe` for windows) app in the current directory. If you build the application and run locally, by default it immediately opens the browser, so you can start using it.
Default login: **admin**, for default password use empty string (no password).
To build with docker and run with docker-compose use: `docker build -t edm .` and then `docker-compose up`. If you run it with docker-compose it does not open the browser by itself. You can open the system at: http://127.0.0.1:8090

## Technical details
Expand Down
6 changes: 5 additions & 1 deletion templates/blocks.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,11 @@
{{end}}

{{define "bottom"}}
<div id="bottom">© 2022 <a href="https://github.com/alecxcode/edm" target="_blank">EDM Project</a></div>
<div id="bottom">
<span>© 2022 <a href="https://github.com/alecxcode/edm" target="_blank">EDM Project</a></span>
<span>v1.0.0.</span>
<span><a href="/assets/manual.html">Manual</a></span>
</div>
{{end}}

{{define "pagination"}}
Expand Down
Loading

0 comments on commit 4edb4dc

Please sign in to comment.