Compare commits

...

66 Commits

Author SHA1 Message Date
feda51d0f0 Added more content for CPG blogpost 2021-08-16 15:01:36 +01:00
ecbe9477b3 Added initial draft of content priority guide post 2021-08-16 14:24:56 +01:00
3wc
e42749b6ab Update for Ruby 2.7.4
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-24 01:34:43 +02:00
04c1f4abc6 Merge branch 'main' of ssh://git.autonomic.zone:2222/autonomic-cooperative/autonomic.zone
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2021-07-18 07:11:12 +05:00
293176f6c2 update coop cloud blog post image 2021-07-18 07:11:00 +05:00
6d3a7aa06f update coop cloud blog post image 2021-07-18 07:10:29 +05:00
01c7f37f42 Update ruby Docker tag to v2.7.4
Some checks failed
continuous-integration/drone/push Build is failing
2021-07-08 07:00:29 +00:00
08da075460 Use new image
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-07 12:57:13 +02:00
7e99afee31 Merge pull request 'New Co-op Cloud pointer post' (#72) from new-coop-cloud-blog into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #72
2021-07-07 12:38:31 +02:00
fd5648f26e Merge branch 'main' into new-coop-cloud-blog 2021-07-07 12:38:25 +02:00
77e40903ed Add small CC blog post 2021-07-07 12:36:44 +02:00
d9c8878f24 update coop cloud blog post image
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-07 04:10:53 +05:00
24f24a3972 add white bg to coop cloud blog post img
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-06 16:52:19 +05:00
a77f397978 Merge pull request 'Update dependency docker-compose to v1.29.2 (main)' (#68) from renovate/main-docker-compose-1.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #68
2021-05-11 09:18:34 +02:00
ca00e889de Update dependency docker-compose to v1.29.2
Some checks failed
renovate/artifacts Artifact file update failure
2021-05-11 07:00:30 +00:00
b1b597d6d6 Merge pull request 'Update dependency docker-compose to v1.29.1 (main)' (#67) from renovate/main-docker-compose-1.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #67
2021-04-16 09:12:12 +02:00
38cc2c5ec8 Update dependency docker-compose to v1.29.1
Some checks failed
renovate/artifacts Artifact file update failure
2021-04-15 07:00:29 +00:00
6f6a3b2e5e Merge pull request 'Update dependency docker-compose to v1.29.0 (main)' (#66) from renovate/main-docker-compose-1.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #66
2021-04-07 11:56:42 +02:00
c338187c51 Update dependency docker-compose to v1.29.0
Some checks failed
renovate/artifacts Artifact file update failure
2021-04-07 07:00:31 +00:00
d27d98d3e9 Bump ruby version
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-06 13:23:44 +02:00
c2a163776c Merge pull request 'Update ruby Docker tag to v2.7.3 (main)' (#65) from renovate/main-docker-ruby-2.x into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #65
2021-04-06 13:06:01 +02:00
d41de3cfd9 Update ruby Docker tag to v2.7.3 2021-04-06 07:00:32 +00:00
bd73042dd4 Merge pull request 'Update dependency docker-compose to v1.28.6 (main)' (#61) from renovate/main-docker-compose-1.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #61
2021-03-24 09:36:58 +01:00
1e55036a21 Update dependency docker-compose to v1.28.6
Some checks failed
renovate/artifacts Artifact file update failure
2021-03-24 08:00:29 +00:00
fc59c56df8 Fixed typo
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-16 15:44:24 +00:00
332e385657 Merge pull request 'Update dependency docker-compose to v1.28.5 (main)' (#60) from renovate/main-docker-compose-1.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #60
2021-03-02 10:10:18 +01:00
991e2bb332 Merge branch 'main' into renovate/main-docker-compose-1.x 2021-03-02 10:10:01 +01:00
98dd76b300 Add some additional links
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 14:15:00 +01:00
ade028c8cb Fix missing word
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 14:12:53 +01:00
e1d76ff40e Added links at the bottom
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 12:43:21 +00:00
3wc
a78c94250b Small fix to Co-op Cloud blog post
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 14:24:02 +02:00
6b6853be22 Fix for wording around Cloudron
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 13:10:27 +01:00
5891093a60 Add missing title
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 13:08:47 +01:00
897ba19972 Fix up the date
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 13:01:12 +01:00
ce6f92aa12 Add the -
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-01 13:00:34 +01:00
2db78105f7 Merge pull request 'Add Coop Cloud blogpost' (#57) from coop-cloud into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #57
2021-03-01 12:56:18 +01:00
f39ea6d07d Update dependency docker-compose to v1.28.5 2021-03-01 08:00:35 +00:00
6b5a47d86b Go librepunk 2021-02-24 11:44:04 +01:00
e2a43e9ad1 Add matrix room 2021-02-24 11:44:04 +01:00
ca4d5ddb80 Fix links 2021-02-24 11:44:04 +01:00
3da62d7688 Avoid repeating the name here 2021-02-24 11:44:04 +01:00
949ea30680 Use apps instead of applications 2021-02-24 11:44:04 +01:00
fe205e1ac1 Additional changes 2021-02-24 11:44:04 +01:00
d533b5988e Additional fixes 2021-02-24 11:44:04 +01:00
cc2425e1cd Lots of edits 2021-02-24 11:44:03 +01:00
2d86a3ed56 Strip screencast placeholder and format 2021-02-24 11:44:03 +01:00
3wc
308213ed9b Revisions to CoopCloud blog post 2021-02-24 11:44:03 +01:00
e91e38a785 Add Coop Cloud post
Closes #55.
2021-02-24 11:44:03 +01:00
1cb687fd25 Merge pull request 'Update dependency docker-compose to v1.28.4 (main)' (#59) from renovate/main-docker-compose-1.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #59
2021-02-19 12:20:14 +01:00
05cfeaeae3 Update dependency docker-compose to v1.28.4 2021-02-19 08:00:35 +00:00
ad0f285fb1 Merge pull request 'Update dependency docker-compose to v1.28.3 (main)' (#58) from renovate/main-docker-compose-1.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #58
2021-02-18 09:42:16 +01:00
ab8b9c717e Update dependency docker-compose to v1.28.3 2021-02-18 08:00:49 +00:00
266b936312 Fix indentation
All checks were successful
continuous-integration/drone/push Build is passing
2021-02-01 09:42:51 +01:00
2fce0586d8 Revert "Handle dependencies for notifications"
All checks were successful
continuous-integration/drone/push Build is passing
This reverts commit b4b5d32780.

Actually, this is not required since it is all the same pipeline.
2021-01-29 13:32:45 +01:00
b4b5d32780 Handle dependencies for notifications 2021-01-29 13:31:17 +01:00
f9452dd2c5 Merge pull request 'Update dependency docker-compose to v1.28.2' (#52) from renovate/docker-compose-1.x into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #52
2021-01-27 12:23:53 +01:00
75db99c4e1 Update dependency docker-compose to v1.28.2
Some checks failed
continuous-integration/drone/pr Build is failing
2021-01-27 08:00:43 +00:00
9559396132 Fix link to main branch
All checks were successful
continuous-integration/drone/push Build is passing
Closes #51.
2021-01-26 21:58:16 +01:00
dcbdf635ac Switch to main
All checks were successful
continuous-integration/drone/push Build is passing
2021-01-26 13:38:00 +01:00
75b63c9771 Revert "REVERT ME: testing failures"
All checks were successful
continuous-integration/drone/push Build is passing
This reverts commit 27194cbae5.

This has been tested.
2021-01-26 13:37:32 +01:00
27194cbae5 REVERT ME: testing failures
Some checks failed
continuous-integration/drone/push Build is failing
2021-01-26 13:30:03 +01:00
8d73dd3df5 Setup notifications for failure 2021-01-26 13:30:03 +01:00
a4aa3d669f Merge pull request 'decisions-blog-post' (#47) from decisions-blog-post into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #47
2021-01-26 12:50:43 +01:00
9d0e1fee73 Merge branch 'master' into decisions-blog-post
Some checks failed
continuous-integration/drone/pr Build is failing
2021-01-26 12:44:45 +01:00
21b671d945 Use the same image all over the place
All checks were successful
continuous-integration/drone/push Build is passing
Closes #48.
2021-01-26 12:22:10 +01:00
158fef9027 Bump compose version 2021-01-26 12:17:40 +01:00
15 changed files with 200 additions and 14 deletions

View File

@ -19,9 +19,21 @@ steps:
compose: docker-compose.prod.yml compose: docker-compose.prod.yml
deploy_key: deploy_key:
from_secret: drone_ssh_swarm.autonomic.zone from_secret: drone_ssh_swarm.autonomic.zone
- name: notify rocket chat
image: plugins/slack
settings:
webhook:
from_secret: rc_builds_url
username: comradebritney
channel: "internal.builds"
template: "{{repo.owner}}/{{repo.name}} build failed: {{build.link}}"
when:
status:
- failure
trigger: trigger:
branch: branch:
- master - main
event: event:
exclude: exclude:
- pull_request - pull_request

View File

@ -1,4 +1,4 @@
FROM ruby:2.7.2-alpine FROM ruby:2.7.4-alpine3.12
EXPOSE 4000 EXPOSE 4000

View File

@ -1,6 +1,6 @@
source "https://rubygems.org" source "https://rubygems.org"
ruby "2.7.2" ruby "2.7.4"
gemspec gemspec

View File

@ -74,7 +74,7 @@ DEPENDENCIES
jekyll-feed jekyll-feed
RUBY VERSION RUBY VERSION
ruby 2.7.2p137 ruby 2.7.3p183
BUNDLED WITH BUNDLED WITH
2.1.4 2.1.4

View File

@ -4,7 +4,9 @@ version: "3.8"
services: services:
jekyll: jekyll:
image: decentral1se/autonomic.zone:latest image: decentral1se/autonomic.zone:latest
command: bundle exec jekyll serve --host 0.0.0.0 --trace command: |
bundle exec
jekyll serve --host 0.0.0.0 --trace
environment: environment:
JEKYLL_ENV: production JEKYLL_ENV: production
networks: networks:

View File

@ -1,10 +1,12 @@
--- ---
version: "3.7" version: "3.8"
services: services:
jekyll: jekyll:
image: "jekyll/jekyll:4" image: decentral1se/autonomic.zone:latest
command: jekyll serve --watch --force_polling --trace command: |
bundle exec
jekyll serve --watch --host 0.0.0.0 --force_polling --trace
volumes: volumes:
- ".:/srv/jekyll" - ".:/srv/jekyll"
ports: ports:

View File

@ -1 +1 @@
docker-compose==1.28.0 docker-compose==1.29.2

View File

@ -7,7 +7,7 @@
Contact us to discuss your project's needs and arrange a consultation:</br> Contact us to discuss your project's needs and arrange a consultation:</br>
<b><a href="mailto:helo@autonomic.zone">helo@autonomic.zone</a></b></br></br> <b><a href="mailto:helo@autonomic.zone">helo@autonomic.zone</a></b></br></br>
<b><a href="{{ '/assets/pgp/autonomic-key.asc' | relative_url }}">Download PGP key</a></b></br> <b><a href="{{ '/assets/pgp/autonomic-key.asc' | relative_url }}">Download PGP key</a></b></br>
<a href= "https://git.autonomic.zone/autonomic-cooperative/autonomic.zone/src/branch/master/src/assets/pgp"> Verify fingerprint:</a><code id="fingerprint">82FC 87C5 1A71 902F DC10 2CF5 4F90 D55B B24B 1147</code> <a href= "https://git.autonomic.zone/autonomic-cooperative/autonomic.zone/src/branch/main/src/assets/pgp"> Verify fingerprint:</a><code id="fingerprint">82FC 87C5 1A71 902F DC10 2CF5 4F90 D55B B24B 1147</code>
<ul class="icons" style="margin-bottom: 0; padding-top: 1em"> <ul class="icons" style="margin-bottom: 0; padding-top: 1em">
<li> <li>

View File

@ -22,7 +22,7 @@ Our decisions can be split intro three categories: **Small, Medium and Large**.
## 2) Medium - Consensus pending objections ## 2) Medium - Consensus pending objections
- About admin and infrastructure. - About admin and infrastructure.
- Don't have an effect on the direction or operation of the co-op. - Doesn't have an effect on the direction or operation of the co-op.
- Give a deadline: unless anyone objects or asks for more time by then, it goes ahead. - Give a deadline: unless anyone objects or asks for more time by then, it goes ahead.
- The deadline must reasonable (a week by default). - The deadline must reasonable (a week by default).
- If any member of the co-op thinks it's a Large decision, achieve Maximum Consensus™ (see below). - If any member of the co-op thinks it's a Large decision, achieve Maximum Consensus™ (see below).

View File

@ -0,0 +1,99 @@
---
layout: post
title: The Co-operative Cloud
description: Libre software infrastructure without re-inventing the wheel
image: coop-cloud.png
category: coop, co-op, cloud, docker, swarm, libre-software, hosting,
date: 2021-03-01
---
Running [libre software] apps and infrastructure for ourselves and our clients is central to what we do at Autonomic. Now, after a year of work, we're stoked to share our "Co-op Cloud" project with the world. We want to make it easier for others to join the party, ditch corporate spyware, and make their tools [sustainable, transparent and private].
## Why a new tool?
We started out using [Cloudron], which provides a very simple-to-use web interface for deploying libre software apps like Nextcloud, Mediawiki, and Rocket.chat with only a few clicks.
Cloudron allowed us to radically reduce our initial and ongoing server costs. We didn't need to maintain a separate server for each service and clients apps could share computing resources whilst containerisation was still allowing us meeting their data privacy needs. Consequently, we've been able to take on many more "solidarity clients", people doing important work, but on a shoestring budget.
As time has gone on, though, we've had a few moments when we questioned our reliance on Cloudron, and whether it was a sustainable choice for us and for our clients. We came to realise:
- Core parts of the system officially [became proprietary] software. This rang alarm bells for us about its long-term future.
- The work to package the available apps is done [entirely by the Cloudron team itself] and doesn't re-use the existing rich ecosystem of libre software packaging work that's already being done. This seems like a big risk. If Cloudron UG, the company behind Cloudron, goes under, someone or some entity would need to take on that laborious, technically specific and non-transferable packaging work or we'd quickly be leaving ourselves and our clients running outdated and unmaintained software.
- Some aspects of Cloudron's architecture were causing problems. Requiring each app to be a single Docker image makes common application deployment configurations impossible (as far as we know, nobody has yet managed to get Mediawiki's visual editor working in Cloudron, for example).
- Not being able to delegate user management to specific groups has made it hard for us to use Cloudron's Single Sign On system with groups who manage their own users.
- Cloudron's central paradigm is focussed on "non-technical" users with the nice web front end for managing apps. However, we found our clients don't actually need to know what "domain name" or "storage volumes" are. That's why they pay us for support. They want it to "just work". Using an interface designed for non-technical users is not suitable for technical users and adds a lot of bloat.
- Cloudron is a bit of a [black box](https://en.wikipedia.org/wiki/Black_box). When something breaks, it breaks hard and requires technical users to respond and investigate and then fix the issues.
- Cloudron doesn't encourage collective and public collaboration on configuration files.
- We have a general fear of centralising so much of our core business on a commercial entity, which could change its prices at any time and have a massive effect on our ability to operate.
## A New Hope
So, around the end of 2019, we tried to map out a few core principles of a system which might work a lot like Cloudron, but give us more guarantees that we can depend on. We started calling the new project Co-op Cloud. Here are some of the principles we identified:
- Always be available under [copyleft licenses] to retain the shared work as part of the [commons](https://en.wikipedia.org/wiki/Commons). We shouldn't rely on creating [artificial scarcity](https://en.wikipedia.org/wiki/Artificial_scarcity) as a business model.
- Work with existing libre software communities who are already packaging and publishing their software (Nextcloud, Gitea, Mediawiki, Rocket.chat, the list goes on and on...). We want to be involved in their community spaces and build bridges between infrastructure, software development and end-users.
- Based on standardised technologies. Any new tools we write should only add a thin layer of usability on top of existing solutions.
- Place democratic governance at the core of the project. We want to collaborate as much as possible with other co-operatives to build up effective decision-making structures so we can all rely on this project far into the future.
- Focus on meeting the needs of small hosting providers with technical workers in order to provide a solid service for their clients.
- Encourage the creation of a configuration commons. Innovations based on Co-op Cloud can easily be shared and worked on collectively.
In our spare time (partly funded by income from working for our wonderful clients 😀) we've been putting the pieces together; and after a year of work (including two "back to the drawing board" moments), we're ready to launch an [alpha version](https://en.wikipedia.org/wiki/Software_release_life_cycle) of Co-op Cloud to the public.
## Co-op Cloud public alpha
Co-op Cloud is a simple packaging format using existing [open standards] to build a catalogue of apps, and a command-line client to read the catalogue and deploy those apps.
If you'd like to learn more about Co-op Cloud, please read [our documentation], where we explain the decisions we've made so far in more depth. What technologies we're using, how we fit into the existing ecosystem, ways to contribute, what apps are available and so on.
We've already been deploying Co-op Cloud as part of "dual power" strategy. We use Co-op Cloud to run some of our own and our clients' infrastructure while continuing with Cloudron and other strategies for the time being. We're seeing promising stability and it's been a joy to work with.
## Enter the configuration commons
You can also dive straight in by installing [`abra`, Co-op Cloud's command-line tool].
You can use Co-op Cloud right now to deploy any of our [30+ apps] to your own physical server or virtual server. These include [Nextcloud](https://nextcloud.com/) (for file, calendar, contacts etc) [Rocket.chat](https://rocket.chat/) for instant messaging, [Keycloak](https://www.keycloak.org/) for Single Sign-On, [Statping](https://statping.com/) for service monitoring, and websites using [Wordpress](https://wordpress.org/), [Pelican](https://blog.getpelican.com/), [Jekyll](https://jekyllrb.com/), or static HTML. See the [app catalogue](https://docs.cloud.autonomic.zone/apps/) for more.
Apps deployed via Co-op Cloud have automatic SSL certificates, and many come with pre-configured e-mail, backups, or Single Sign-On options.
See the [getting started guide](https://docs.cloud.autonomic.zone/overview/) to get moving fast.
## Packaging for Co-op Cloud
Packaging new apps for Co-op Cloud is straightforward in most cases: you can re-use an application's own Docker image (or even `docker-compose.yml` file) with minimal changes. We managed to [make a Co-op Cloud version of the Matomo web analytics platform in about 20 minutes]. This standardised architecture also means that nobody using Co-op Cloud is dependent on Autonomic for updates. When a new Wordpress update comes out, you can easily install it yourself or automatically without waiting for us to update some arcane custom Docker image.
## Next steps
At this point, we'd like to invite other worker co-operatives or democratic collectives to take a look at what we're working on and have a chat with us. We have a public matrix room at `#coopcloud:autonomic.zone`. We think a common platform for hosting libre software infrastructure could make a big difference in terms of what we're able to offer as a movement.
If you're interested in getting involved with Co-op Cloud development, or if you'd like help trying out Co-op Cloud hosted services for yourself or your organisation, please [get in touch].
## Links
- [Documentation](https://cloud.autonomic.zone/)
- [Source code](https://git.autonomic.zone/coop-cloud)
- [Public Matrix chat](https://matrix.to/#/#coopcloud:autonomic.zone?via=autonomic.zone)
[libre software]: http://wikieducator.org/Libre
[sustainable, transparent and private]: /#core-values
[cloudron]: https://cloudron.io/
[became proprietary]: https://forum.cloudron.io/topic/2862/why-not-make-cloudron-fully-open-source-again
[entirely by the cloudron team itself]: https://git.cloudron.io/cloudron
[our documentation]: https://docs.cloud.autonomic.zone
[`abra`, co-op cloud's command-line tool]: https://git.autonomic.zone/coop-cloud/abra/
[30+ apps]: https://git.autonomic.zone/coop-cloud/
[get in touch]: mailto:helo@autonomic.zone
[copyleft licenses]: https://www.gnu.org/licenses/copyleft.en.html
[open standards]: https://compose-spec.io/
[make a co-op cloud version of the matomo web analytics platform in about 20 minutes]: https://docs.cloud.autonomic.zone/package/

View File

@ -0,0 +1,10 @@
---
layout: post
title: New Co-op Cloud blog, socials and updates
description: Co-op Cloud project blog, socials and monthly updates
image: ccblog.png
category: coop, co-op, cloud, docker, swarm, libre-software, hosting,
date: 2021-07-07
---
The Co-op Cloud is starting to come into its own and we've decided to move our posts over to a dedicated [new and shiny blog](https://coopcloud.tech/blog/). We are working on opening up shared ownership of the project and want to create digital spaces where Autonomic is not implicitly having some sort of gate keeping role. We'll be writing regularly about our progress over there. We've also made new [Twitter](https://twitter.com/Coop_Cloud) and [Mastodon](https://social.coop/@coopcloud) which can you can follow along. That's all for now!

View File

@ -0,0 +1,61 @@
---
layout: post
title: Content Priority Guides for Websites
description: What is a Content Priority Guide and how to use it for web development
image:
category: autonomic, content, priority, guide, web, development, design, copywriting
date: 2021-08-16
---
A Content Priority Guide (CPG) are a simpler and faster version of [wireframes](https://en.wikipedia.org/wiki/Website_wireframe) that isn't focussed on design or the actual and encourage a client to not get bogged down in details. We found this exercise, gives the client and ourselves a clear and concise map of what the site is going to look like at an earliest stages of the project as possible. This is especially useful for smaller projects where there isn't budget or the client isn't very experienced with commissioning web development work.
The content itself can then be worked on referencing the structure and hierarchy laid out in the CPG and if appropriate, the design team and front-end development team will also use the CPG in their work. The common consensus on the site layout created by the CPG allows for a "multi-threaded" approach to the project where different teams are able to work on their respective specialities simultaneously. The CPG can be updated as the project proceeds as long as all teams are aware of the changes.
If a client's budget allows, Autonomic will also do more in depth collaborative processes with our clients but making a CPG together is a great starting point and requires no specialist tools or knowledge.
Below is a sample Content Priority Guide. It was inspired by this [blog post](https://seesparkbox.com/foundry/content_priority_guide) and this [article](https://www.smashingmagazine.com/2012/05/design-process-responsive-age/).
## Sample priority guide
### The audience
- Who are your audiences?
- Can you list your audiences in order of priority?
- What are the accessibility needs of your audiences?
- What devices are your audiences primarily accessing the site on?
### Page 1 - Homepage
1. Heading
2. Hero image
3. About Us copy (3-4 sentences)
4. Our demands section
- Section Title
- Bullet point list of demands
5. What we do section
- Section title
- Image
- What we do (A few sentences describing our activities)
- How we do it (A few sentences that include our principles)
- Our outcomes (A few paragraphs that talk about what we have achieved)
### Page 2 - Projects
1. Heading
2. Sub-heading
3. 6-8 items displayed in chronological order
- Project Title
- Image or Headline (if an image is provided, that will display. If there is no image, the headline will display)
- Project Description (2-4 sentences about the project)
- Link to read project details entry
### Page 3 - Blog
1. Heading
2. List of 6-8 blog posts
- Blog title
- Blog post publish date
- Blog post tags
- Pagination navigation links
3. Archive blog posts drop down selectable by month
### Page 4 - Contact
1. Headline
2. Email contact form
3. Follow us on social media subheading and icons with links to social media pages

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
src/assets/images/index.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB