Browse Source

Create docs

Skylar Ittner 10 months ago
commit
b6b2ad9ab4
7 changed files with 716 additions and 0 deletions
  1. 1
    0
      .gitignore
  2. 75
    0
      docs/System Requirements.md
  3. 380
    0
      docs/Theme Development.md
  4. 117
    0
      docs/images/docs-icon.svg
  5. 104
    0
      docs/images/logo.svg
  6. 23
    0
      docs/index.md
  7. 16
    0
      mkdocs.yml

+ 1
- 0
.gitignore View File

@@ -0,0 +1 @@
1
+site/

+ 75
- 0
docs/System Requirements.md View File

@@ -0,0 +1,75 @@
1
+# System Requirements
2
+
3
+SiteWriter (and the other Business Apps) are tested and officially supported on the following configurations.  Other systems may be supported at our discretion, possibly with an additional support fee.  The business apps should work on any sane Linux/PHP/MySQL based web server, even if it is not within the requirements shown here.
4
+
5
+## Server
6
+
7
+### Minimum Hardware
8
+
9
+The Business Apps are very lightweight on server resources.  The minimum supported hardware is a $35 Rasperry Pi 3 (1.2 GHz quad-core ARM CPU, 1GB RAM, 100Mbps Ethernet). Cloud VPS servers with as little as 512 MB RAM are fine too.
10
+
11
+### Software and Operating System
12
+
13
+* Server Operating System
14
+    * Ubuntu
15
+    * Debian
16
+* PHP
17
+    * 7.0
18
+    * 7.1
19
+    * 7.2
20
+* Database
21
+    * MySQL 5.7+
22
+    * MariaDB 10.0+
23
+* Web Server
24
+    * Apache 2.4
25
+
26
+### Recommended Software
27
+For best performance, security, and ease of administration, we recommend installing the following on your server:
28
+
29
+* Google's ModPageSpeed Apache module (on-the-fly caching and bandwidth optimization)
30
+* PHP's opcache (cached compiled PHP code for faster execution)
31
+* Fail2ban (if using SSH or other remote administration methods)
32
+* PHPMyAdmin (web-based MySQL/MariaDB server administration)
33
+* LetsEncrypt (automatic free SSL encryption setup)
34
+
35
+## Client
36
+
37
+The Business Apps are web-based and built with modern technologies.  This means any machine capable of running a standards-compliant, modern, up-to-date web browser will run the Business Apps just fine.
38
+
39
+### Officially Supported Operating Systems
40
+Note: This list is incomplete, as any OS capable of running one of the browsers from the list below will suffice.
41
+
42
+* Linux
43
+	* Ubuntu Linux 16.04, 18.04, and supported non-LTS releases
44
+	* Ubuntu derivatives (such as Linux Mint) based on a supported Ubuntu release
45
+	* Debian 8 or 9
46
+* Android
47
+	* 5.0+ with Chrome, or
48
+	* Any supported by Firefox, or
49
+	* Any supported by the Business Apps for Mobile client
50
+
51
+### Supported Operating Systems
52
+Any other operating system running a supported browser is also supported, but we may not provide support for issues not directly related to the Business Apps.
53
+
54
+### Supported Screen Resolutions
55
+All screens with a viewport (the portion of the screen showing the app, in contrast to window borders, status bars, etc) having a resolution greater than 300x400 pixels will work, assuming use of a supported browser.
56
+
57
+### Supported Web Browsers
58
+* Mozilla Firefox (54+)
59
+* Chrome/Chromium (latest and latest-1)
60
+* Chrome WebView, AOSP WebView (Android 5.0+)
61
+
62
+### Unsupported Web Browsers
63
+While we do not support the following browsers, they will likely still work.  You won't break anything by trying.
64
+
65
+* Edge
66
+* Safari
67
+* Opera
68
+
69
+### Known Incompatable Browsers
70
+These browsers are known to lack support for CSS rules, JavaScript APIs, and other technology required to run the Business Apps.
71
+
72
+* Opera Mini
73
+* Internet Explorer
74
+
75
+Recent versions of Internet Explorer should be able to view created websites with some minor changes.

+ 380
- 0
docs/Theme Development.md View File

@@ -0,0 +1,380 @@
1
+# Theme Development
2
+
3
+Themes are a collection of page templates, assets (CSS, JS, etc) and a metadata file.  They should use responsive design and be easily edited and viewed.  Providing a variety of color schemes is recommended for users to choose from when building their site.
4
+
5
+## Folder Structure
6
+
7
+This is the folder structure for a standard theme.  The root folder shown below should be placed in `[sitewriter app]/public/themes`.  **Bold** denotes a folder, *italic* denotes required.
8
+
9
+* Theme Name
10
+    * _theme.json_
11
+    * contact.php
12
+    * _default.php_
13
+    * _404.php_
14
+    * ***colors***
15
+        * ***default***
16
+        * **green**
17
+        * **etc**
18
+                
19
+
20
+## Metadata File
21
+
22
+The metadata file is required for SiteWriter to recognize the theme.  It must be saved as `theme.json` in the root folder of the theme.
23
+
24
+It contains the theme name, singlepage flag, list of page templates, and list of theme colors.
25
+
26
+`singlepage` is a flag that tells SiteWriter if the theme is designed for a single-page website.  If it is set to true, page creation will be disabled and the site will only have a single page.
27
+
28
+`templates` is a list of page templates.  A template with an ID of `default` is required.  The template ID is the name of the template file without the .php extension.  For example, SiteWriter loads `home.php` to show a page with the `home` template.
29
+
30
+`colors` is a list of color schemes for the theme.  The color ID is the name of the folder where the color-specific assets are stored.  A color of `default` is required.  If the chosen color is `green`, the color-specific assets should be placed in `colors/green` in the theme folder.
31
+
32
+### Sample `theme.json`
33
+
34
+```js
35
+{
36
+    "name": "My Theme",
37
+    "singlepage": false,
38
+    "templates": {
39
+        "default": {
40
+            "title": "Default",
41
+            "description": "A regular page."
42
+        },
43
+        "home": {
44
+            "title": "Home",
45
+            "description": "A homepage."
46
+        },
47
+        "contact": {
48
+            "title": "Contact",
49
+            "description": "A contact page."
50
+        },
51
+    },
52
+    "colors": {
53
+        "default": {
54
+            "title": "Default",
55
+            "description": "Blue color theme"
56
+        },
57
+        "green": {
58
+            "title": "Green",
59
+            "description": "Green color theme"
60
+        }
61
+    }
62
+}
63
+
64
+```
65
+
66
+## Templates
67
+
68
+### `default.php`
69
+
70
+`default.php` is the default template file for a normal page in your theme.  It is a standard PHP script containing HTML markup.  It should never be loaded directly by a web browser, so you can safely assume theme functions and other SiteWriter theme utilities to be present.
71
+
72
+### `404.php`
73
+
74
+As the name implies, this template is loaded to handle 404 errors.  It is not user-selectable as a page template.  It should not contain any user-editable fields, as there is currently no way for a user to edit site error pages.
75
+
76
+### `contact.php`
77
+
78
+It is highly recommended to have a contact form template included in your theme.  It should contain a standard form that POSTs to `contact.php` with the fields `name`, `email`, and `message`.
79
+
80
+## Template Requirements and Considerations
81
+
82
+Do not use the optional `<html>`, `<head>`, and `<body>` tags for your template HTML.  The editor relies on being able to append code to the document and have it still work normally.
83
+
84
+Do include FontAwesome 5 in your theme.  The SiteWriter editor allows the user to pick icons from the FontAwesome Free icon set to enhance their content.
85
+
86
+Do include company info (business name, phone number, address, and email) and social media links (Facebook, Twitter, YouTube, Mastodon, etc) in the theme.  These can be setup in the sitewide settings, and users will expect themes to make use of this information.
87
+
88
+Do include `<?php get_header(); ?>` and `<?php get_footer(); ?>` snippets in your templates.  They are used to inject additional content into the template, such as third-party analytics code.
89
+
90
+Do copy code from the Bootstrap theme included with SiteWriter.
91
+
92
+## Common Component Names
93
+
94
+To make theme transitions as seamless as possible, try to use the same component names as other themes for equivalent components.
95
+
96
+* Page subtitle: `lead`, plain text
97
+* Page content: `content`, rich text
98
+* Page banner (not page title): `banner-title`, plain text
99
+* Content cards: `cardrow-$i`, rich text (where $i is a number between 1 and 3)
100
+* Action buttons above the fold: `banner-btn-$i`, complex component with icon, link, and text (where $i is 1 or 2)
101
+* Contact form submit button: `submit-btn`, complex component with icon and text
102
+
103
+Consult the included Bootstrap and Verti themes for example usage of these common components.
104
+
105
+## Example Template
106
+
107
+Below is a minimal functional `default` template that fulfills the above requirements.
108
+
109
+```html
110
+<!DOCTYPE html>
111
+<meta charset=`utf-8`>
112
+<title><?php get_site_name(); ?></title>
113
+<script defer src="<?php get_theme_url(); ?>/fontawesome-all.min.js"></script>
114
+<?php get_header(); ?>
115
+<!-- Navbar -->
116
+<ul>
117
+	<?php get_navigation(); ?>
118
+</ul>
119
+<h1><?php get_page_title(); ?></h1>
120
+<h2>
121
+	<div class="sw-text" data-component="lead">
122
+		<?php get_component("lead"); ?>
123
+	</div>
124
+</h2>
125
+<div class="sw-editable" data-component="content">
126
+	<?php get_page_content(); ?>
127
+</div>
128
+<footer>
129
+	<!-- Social Media -->
130
+	<ul>
131
+        <?php
132
+        $social = get_socialmedia_urls();
133
+        foreach ($social as $s) {
134
+            ?>
135
+            <a class="btn btn-outline-primary m-1" href="<?php echo $s['url']; ?>">
136
+                <i class="<?php echo $s['icon']; ?> fa-fw"></i>
137
+                <span class="sr-only"><?php echo $s['name']; ?></span>
138
+            </a>
139
+            <?php
140
+        }
141
+        ?>
142
+	</ul>
143
+</footer>
144
+```
145
+
146
+## Code Snippets
147
+
148
+### Plain Text Component
149
+
150
+```html
151
+<p class="sw-text" data-component="lead">
152
+  <?php get_component("lead"); ?>
153
+</p>
154
+```
155
+
156
+### HTML Component
157
+
158
+```html
159
+<div class="sw-editable" data-component="component-name">
160
+  <?php get_component("component-name"); ?>
161
+</div>
162
+```
163
+
164
+### Complex Component
165
+
166
+```html
167
+<?php
168
+if (!is_complex_empty("banner-btn-2")) {
169
+  $btn = get_complex_component("banner-btn-2", null, ['icon', 'image', 'link', 'text']);
170
+  $icon = $btn['icon'];
171
+  $image = $btn['image'];
172
+  $link = $btn['link'];
173
+  $text = $btn['text'];
174
+  ?>
175
+  <a href="<?php get_url_or_slug($link); ?>" class="sw-complex" data-json="<?php echo get_escaped_json($btn); ?>" data-component="banner-btn-2">
176
+    <i class="<?php echo $icon; ?>"></i>
177
+    <?php echo $text; ?>
178
+    <img src="<?php echo $image; ?>" />
179
+  </a>
180
+<?php } ?>
181
+```
182
+
183
+## Theme Functions
184
+
185
+### `get_site_name($echo = true)`
186
+
187
+Get the name of the website.
188
+
189
+ * **Parameters:** `$echo` — `boolean` — default true
190
+ * **Returns:** `string` — 
191
+
192
+### `get_site_url($echo = true)`
193
+
194
+Get the URL of the website.
195
+
196
+ * **Parameters:** `$echo` — `boolean` — default true
197
+ * **Returns:** `string` — 
198
+
199
+### `get_page_title($echo = true)`
200
+
201
+Get the page title.
202
+
203
+ * **Parameters:** `$echo` — `boolean` — default true
204
+ * **Returns:** `string` — 
205
+
206
+### `get_page_clean_title($echo = true)`
207
+
208
+Get the page title stripped of any HTML.
209
+
210
+ * **Parameters:** `$echo` — `boolean` — default true
211
+ * **Returns:** `string` — 
212
+
213
+### `get_page_slug($echo = true)`
214
+
215
+Get the page slug for the current page.
216
+
217
+ * **Parameters:** `$echo` — `boolean` — default true
218
+ * **Returns:** `string` — 
219
+
220
+### `get_page_clean_url($echo = true, $slug = null)`
221
+
222
+Get a valid minimal URL for a page.
223
+
224
+ * **Parameters:**
225
+   * `$echo` — `boolean` — default true
226
+   * `$slug` — `string` — page slug, or null for current
227
+ * **Returns:** `string` — 
228
+
229
+### `get_page_url($echo = true, $slug = null)`
230
+
231
+Get a valid URL for a page.
232
+
233
+ * **Parameters:**
234
+   * `$echo` — `boolean` — default true
235
+   * `$slug` — `string` — page slug, or null for current
236
+ * **Returns:** `string` — 
237
+
238
+### `get_component($name, $context = null, $echo = true)`
239
+
240
+Echoes or returns the content of a component.
241
+
242
+ * **Parameters:**
243
+   * `$name` — `string` — component name
244
+   * `$context` — `string` — page slug, or null for current
245
+   * `$echo` — `boolean` — default true
246
+ * **Returns:** `string` — 
247
+
248
+### `is_component_empty($name, $context = null)`
249
+
250
+Check if a component is empty of content.
251
+
252
+ * **Parameters:**
253
+   * `$name` — `string` — component name
254
+   * `$context` — `string` — page slug, or null for current
255
+ * **Returns:** `boolean` — 
256
+
257
+### `get_complex_component($name, $context = null, $include = [])`
258
+
259
+Return the data for a complex component (icon, link, text, image, etc)
260
+
261
+ * **Parameters:**
262
+   * `$name` — `string` — component name
263
+   * `$context` — `string` — page slug, or null for current
264
+   * `$include` — `array` — list of properties to include in the output
265
+ * **Returns:** `array` — 
266
+
267
+### `is_complex_empty($name, $context = null)`
268
+
269
+Check if the specified complex component is empty.
270
+
271
+ * **Parameters:**
272
+   * `$name` — `string` — 
273
+   * `$context` — `string` — page slug
274
+ * **Returns:** `boolean` — 
275
+
276
+### `get_escaped_json($json, $echo = true)`
277
+
278
+Convert a variable into encoded JSON for safe inclusion in an element property.
279
+
280
+ * **Parameters:**
281
+   * `$json` — or array to convert to JSON
282
+   * `$echo` — `boolean` — default true
283
+ * **Returns:** `string` — 
284
+
285
+### `get_url_or_slug($str, $echo = true)`
286
+
287
+Detects if a string is a URL or a page slug, and returns something usable for href
288
+
289
+ * **Parameters:**
290
+   * `$str` — `string` — 
291
+   * `$echo` — `boolean` — 
292
+ * **Returns:** `string` — 
293
+
294
+### `get_page_content($slug = null)`
295
+
296
+Shortcut for get_component("content").
297
+
298
+ * **Parameters:** `$slug` — `string` — Get the content for the passed page instead of the current.
299
+
300
+### `get_header()`
301
+
302
+Echoes invisible page header content.
303
+
304
+### `get_footer()`
305
+
306
+Echoes invisible page footer content.
307
+
308
+### `get_setting($key, $echo = false)`
309
+
310
+Return or echo the value of the given site setting key, or an empty string if unset.
311
+
312
+ * **Parameters:**
313
+   * `$key` — `string` — 
314
+   * `$echo` — `boolean` — default false
315
+ * **Returns:** `string` — 
316
+
317
+### `get_theme_url($echo = true)`
318
+
319
+Get the URL path for the theme folder, without trailing slash.
320
+
321
+ * **Parameters:** `$echo` — `boolean` — default true
322
+ * **Returns:** `string` — 
323
+
324
+### `get_theme_color_url($echo = true)`
325
+
326
+Get the URL base for the selected theme color asset folder, without trailing slash.
327
+
328
+ * **Parameters:** `$echo` — `boolean` — default true
329
+ * **Returns:** `string` — 
330
+
331
+### `get_navigation($currentpage = null, $classPrefix = "", $liclass = "", $currentclass = "current", $linkclass = "", $currentlinkclass = "active")`
332
+
333
+Get the page navigation as a string containing a series of `<li><a></a></li>` elements.
334
+
335
+**Format:**  
336
+Current page:
337
+```html
338
+<li class="$classPrefix$slug $liclass $currentclass">
339
+  <a class="$linkclass $currentlinkclass" href="url">
340
+    Link Text
341
+  </a>
342
+</li>
343
+```
344
+Other pages:
345
+```html
346
+<li class="$classPrefix$slug $liclass">
347
+  <a class="$linkclass" href="url">
348
+    Link Text
349
+  </a>
350
+</li>
351
+```
352
+
353
+ * **Parameters:**
354
+   * `$currentpage` — `string` — The page slug to use for context, or null for current.
355
+   * `$classPrefix` — `string` — 
356
+   * `$liclass` — `string` — 
357
+   * `$currentclass` — `string` — default "current"
358
+   * `$linkclass` — `string` — 
359
+   * `$currentlinkclass` — `string` — default "active"
360
+
361
+### `output_conditional($content, $var)`
362
+
363
+Replace "[[VAR]]" with the contents of $var and echo $content, but only if $var isn't empty.
364
+
365
+ * **Parameters:**
366
+   * `$content` — `string` — 
367
+   * `$var` — `string` — 
368
+
369
+### `get_fontawesome_js($echo = true)`
370
+
371
+Echos or returns a URL for the FontAwesome 5 JavaScript.
372
+
373
+ * **Parameters:** `$echo` — `boolean` — default true
374
+ * **Returns:** `string` — 
375
+
376
+### `get_socialmedia_urls()`
377
+
378
+Returns an array of social media URLs, with FontAwesome icon classes and labels.
379
+
380
+ * **Returns:** `array` — `[["icon", "name", "url"]]`

+ 117
- 0
docs/images/docs-icon.svg View File

@@ -0,0 +1,117 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+<svg
5
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+   xmlns:cc="http://creativecommons.org/ns#"
7
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
+   xmlns:svg="http://www.w3.org/2000/svg"
9
+   xmlns="http://www.w3.org/2000/svg"
10
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12
+   width="512"
13
+   height="512"
14
+   viewBox="0 0 511.99999 511.99999"
15
+   id="svg2"
16
+   version="1.1"
17
+   inkscape:version="0.91 r13725"
18
+   sodipodi:docname="docs-icon.svg"
19
+   inkscape:export-filename="/home/skylar/Documents/Assets/Graphics/docs-icon.png"
20
+   inkscape:export-xdpi="45"
21
+   inkscape:export-ydpi="45">
22
+  <defs
23
+     id="defs4" />
24
+  <sodipodi:namedview
25
+     id="base"
26
+     pagecolor="#ffffff"
27
+     bordercolor="#666666"
28
+     borderopacity="1.0"
29
+     inkscape:pageopacity="0.0"
30
+     inkscape:pageshadow="2"
31
+     inkscape:zoom="0.98994949"
32
+     inkscape:cx="52.220574"
33
+     inkscape:cy="225.3771"
34
+     inkscape:document-units="px"
35
+     inkscape:current-layer="layer1"
36
+     showgrid="false"
37
+     units="px"
38
+     inkscape:window-width="1920"
39
+     inkscape:window-height="1023"
40
+     inkscape:window-x="107"
41
+     inkscape:window-y="1024"
42
+     inkscape:window-maximized="1" />
43
+  <metadata
44
+     id="metadata7">
45
+    <rdf:RDF>
46
+      <cc:Work
47
+         rdf:about="">
48
+        <dc:format>image/svg+xml</dc:format>
49
+        <dc:type
50
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
51
+        <dc:title />
52
+      </cc:Work>
53
+    </rdf:RDF>
54
+  </metadata>
55
+  <g
56
+     inkscape:label="Layer 1"
57
+     inkscape:groupmode="layer"
58
+     id="layer1"
59
+     transform="translate(0,-540.36219)">
60
+    <rect
61
+       y="593.73596"
62
+       x="56"
63
+       height="50"
64
+       width="400"
65
+       id="rect4187"
66
+       style="fill:#00b0ff;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1" />
67
+    <rect
68
+       style="fill:#9e9e9e;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
69
+       id="rect4150"
70
+       width="380"
71
+       height="50"
72
+       x="76"
73
+       y="683.25037" />
74
+    <rect
75
+       style="fill:#9e9e9e;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
76
+       id="rect4154"
77
+       width="380"
78
+       height="50"
79
+       x="76"
80
+       y="953.25037" />
81
+    <g
82
+       id="g4162"
83
+       style="fill:#bdbdbd">
84
+      <rect
85
+         style="fill:#bdbdbd;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
86
+         id="rect4148"
87
+         width="320"
88
+         height="50"
89
+         x="136"
90
+         y="773.25037" />
91
+      <circle
92
+         r="12.5"
93
+         cy="798.25037"
94
+         cx="101.19038"
95
+         id="path4160"
96
+         style="fill:#bdbdbd;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1" />
97
+    </g>
98
+    <g
99
+       transform="translate(40,90.000002)"
100
+       id="g4162-3"
101
+       style="fill:#bdbdbd">
102
+      <rect
103
+         style="fill:#bdbdbd;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1"
104
+         id="rect4148-6"
105
+         width="280"
106
+         height="50"
107
+         x="136"
108
+         y="773.25037" />
109
+      <circle
110
+         r="12.5"
111
+         cy="798.25037"
112
+         cx="101.19038"
113
+         id="path4160-7"
114
+         style="fill:#bdbdbd;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:5, 5;stroke-dashoffset:0;stroke-opacity:1" />
115
+    </g>
116
+  </g>
117
+</svg>

+ 104
- 0
docs/images/logo.svg View File

@@ -0,0 +1,104 @@
1
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+<svg
3
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+   xmlns:cc="http://creativecommons.org/ns#"
5
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+   xmlns:svg="http://www.w3.org/2000/svg"
7
+   xmlns="http://www.w3.org/2000/svg"
8
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
+   width="512"
11
+   height="512"
12
+   viewBox="0 0 511.99999 511.99999"
13
+   id="svg2"
14
+   version="1.1"
15
+   inkscape:version="0.91 r13725"
16
+   sodipodi:docname="logo.svg"
17
+   inkscape:export-filename="/home/skylar/Documents/Projects/Assets/SiteWriter/logo_512.png"
18
+   inkscape:export-xdpi="90"
19
+   inkscape:export-ydpi="90">
20
+  <sodipodi:namedview
21
+     pagecolor="#ffffff"
22
+     bordercolor="#666666"
23
+     borderopacity="1"
24
+     objecttolerance="10"
25
+     gridtolerance="10"
26
+     guidetolerance="10"
27
+     inkscape:pageopacity="0"
28
+     inkscape:pageshadow="2"
29
+     inkscape:window-width="1440"
30
+     inkscape:window-height="842"
31
+     id="namedview14"
32
+     showgrid="false"
33
+     inkscape:zoom="0.65186406"
34
+     inkscape:cx="-263.8452"
35
+     inkscape:cy="164.6375"
36
+     inkscape:window-x="1024"
37
+     inkscape:window-y="156"
38
+     inkscape:window-maximized="1"
39
+     inkscape:current-layer="svg2" />
40
+  <defs
41
+     id="defs4" />
42
+  <metadata
43
+     id="metadata7">
44
+    <rdf:RDF>
45
+      <cc:Work
46
+         rdf:about="">
47
+        <dc:format>image/svg+xml</dc:format>
48
+        <dc:type
49
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
50
+        <dc:title />
51
+      </cc:Work>
52
+    </rdf:RDF>
53
+  </metadata>
54
+  <rect
55
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:20;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.74509804"
56
+     id="rect4726-3"
57
+     width="512"
58
+     height="512"
59
+     x="0"
60
+     y="0"
61
+     rx="50"
62
+     ry="50" />
63
+  <path
64
+     id="rect4149"
65
+     d="m 151.84815,105.55999 c 0,0 208.08221,4e-4 208.08221,4e-4 8.87969,2e-5 17.47765,5.42434 19.32647,12.34724 0,0 68.50606,256.52161 68.50606,256.52161 4.65095,17.41553 -3.3789,32.03897 -18.20921,32.01073 0,0 -347.207046,-0.66126 -347.207046,-0.66126 -14.762494,-0.0281 -22.747362,-14.64569 -18.112131,-32.00219 0,0 68.337707,-255.88862 68.337707,-255.88862 1.84592,-6.91197 10.42061,-12.32792 19.27594,-12.32791 0,0 0,0 0,0"
66
+     style="opacity:1;fill:#03a9f4;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
67
+     inkscape:connector-curvature="0" />
68
+  <g
69
+     transform="matrix(5.9992735,-11.249026,11.249026,5.999273,-1609.4403,-1737.4273)"
70
+     id="g2030"
71
+     style="display:inline;stroke-width:1.91200209" />
72
+  <rect
73
+     ry="11.220414"
74
+     rx="11.220414"
75
+     y="237.21503"
76
+     x="150.21944"
77
+     height="18.934093"
78
+     width="211.56111"
79
+     id="rect5279"
80
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
81
+  <rect
82
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
83
+     id="rect5281"
84
+     width="245.31049"
85
+     height="21.954561"
86
+     x="133.34476"
87
+     y="287.24475"
88
+     rx="13.010355"
89
+     ry="13.010355" />
90
+  <rect
91
+     style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
92
+     id="rect5277"
93
+     width="188.55019"
94
+     height="16.874683"
95
+     x="161.7249"
96
+     y="189.24477"
97
+     rx="10"
98
+     ry="10" />
99
+  <path
100
+     style="opacity:1;fill:#3f51b5;fill-opacity:1;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
101
+     d="m 413.40083,100.4255 c -6.25994,-3.614167 -12.82305,-3.883777 -14.71576,-0.605517 L 267.15452,327.63761 c -0.1189,0.20593 -0.21483,0.42009 -0.29174,0.64289 -2.61136,2.10628 3.51508,29.26281 7.21558,31.3993 3.70042,2.13644 30.28348,-6.13458 30.80284,-9.44936 0.1545,-0.17801 0.28948,-0.3696 0.40838,-0.57554 L 436.82014,121.83727 c 1.8927,-3.27826 -1.62235,-8.82729 -7.88226,-12.44145 l -15.53706,-8.97032 z"
102
+     id="rect4549"
103
+     inkscape:connector-curvature="0" />
104
+</svg>

+ 23
- 0
docs/index.md View File

@@ -0,0 +1,23 @@
1
+# SiteWriter
2
+
3
+SiteWriter is an easy-to-use website design system.
4
+
5
+## Features
6
+
7
+* __Simple Editor__
8
+    * Create awesome websites with zero coding or design experience.
9
+
10
+* __Themes and Templates__
11
+    * Choose from a variety of website themes, color variations, and page templates.
12
+
13
+* __Multi-site__
14
+    * Build and manage multiple websites at the same time
15
+
16
+* __File Manager__
17
+    * Upload pictures and files and add them to your sites with a simple file browser tool.
18
+
19
+* __Analytics__
20
+    * See visitor location, page views, and more with a built-in analytics dashboard.
21
+
22
+* __Contact Forms__
23
+    * Simply create a page with a contact form template and start receiving and replying to messages from a dashboard.

+ 16
- 0
mkdocs.yml View File

@@ -0,0 +1,16 @@
1
+site_name: SiteWriter Docs
2
+theme:
3
+  name: 'material'
4
+  logo: 'images/logo.svg'
5
+  favicon: 'images/docs-icon.svg'
6
+  feature:
7
+    tabs: false
8
+  palette:
9
+    primary: 'light-blue'
10
+    accent: 'light-blue'
11
+extra_javascript:
12
+  - track.js
13
+site_author: Netsyms Technologies
14
+repo_name: 'Business/SiteWriter'
15
+repo_url: 'https://source.netsyms.com/Business/SiteWriter'
16
+copyright: Copyright &copy; 2018 Netsyms Technologies.  All rights reserved.  Copying is allowed for instructional purposes (such as creating an internal user help document) as long as credit is given and this copyright notice is included.  For other purposes, or if you are selling a product containing copied material, please <a href="https://netsyms.com/contact" target="_BLANK">contact us</a> for permission.

Loading…
Cancel
Save