Skip to content

Commit

Permalink
Merge pull request #67 from brightdigit/development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
leogdion authored Aug 21, 2020
2 parents d818ea9 + 8bf51ec commit 2db12f7
Show file tree
Hide file tree
Showing 9 changed files with 168 additions and 23 deletions.
7 changes: 5 additions & 2 deletions .github/workflows/macOS.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: macOS

on: [push]
on:
push:
branches:
- '*'

jobs:
build:
Expand Down Expand Up @@ -34,7 +37,7 @@ jobs:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Build Documentation
if: ${{ matrix.xcode == '/Applications/Xcode_12_beta.app' }}
run: swift run sourcedocs generate -c --spm-module OrchardNestKit
run: swift run sourcedocs generate build -c --spm-module OrchardNestKit
- name: Commit files
if: ${{ matrix.xcode == '/Applications/Xcode_12_beta.app' }}
run: |
Expand Down
Binary file added Public/images/leo.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Public/images/logo-small.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 8 additions & 1 deletion Public/styles/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,6 @@ body.category.podcasts ul.articles li > .featured-image {
background-size: contain;
}
body.category.podcasts h3 {
font-size: 2.8rem;
font-size: 1.5rem;
line-height: 1.3;
}
Expand Down Expand Up @@ -304,3 +303,11 @@ body.category.youtube ul.articles li.blog-post .author .a {
clear: both;
display: block;
}

.page{
font-size: 2rem;
}

.page.about img:first-child {
margin-top: 2rem;
}
41 changes: 39 additions & 2 deletions Resources/Views/about.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,43 @@
---
description: About Orchardnest
---
# About
![](/images/logo-small.png)

Coming Soon...
# OrchardNest

**OrchardNest is a site built by Leo Dion and dedicated to the Swift and Apple Developer community by providing a source for news, tutorials, podcasts, YouTube videos, and other updates.**

**Based on the wonderful [iOS Dev Directory by Dave Verwer](https://iosdevdirectory.com)**, this aggreates, filters, curates the variety of RSS feeds availables from [developers](/development), [designers](/design), [podcasters](/podcasts), [youtubers](/youtube) and [newsletters](/newsletters).

If I am missing a site I highly recommend checking out Dave's [guidence on how to add a site](https://iosdevdirectory.com/contributing/). My hope is that this site continues to grow and helps developers stay informed about the Apple ecosystem and Swift.

If you have any other questions, check out our [support and FAQ page](/support) for more details.

## <i class="el el-smiley"></i> About Leo

![](/images/leo.jpeg)

**Hi! My name is Leo Dion.** I have been doing software development for over 20 years. I have focused on Apple platforms and Swift for at least 10 years. I love developing in Swift and [I run my own company, BrightDigit](https://brightdigit.com) doing freelance Swift development and consulting. I build apps for the iPhone and iPad but also I love the Mac and Apple Watch as well. Recently I have enjoyed building
server-side solutions like this in Swift with Vapor.

Besides [my company](https://brightdigit.com), I run [a podcast, EmpowerApps.Show](https://empowerapps.show), a [development blog at learningswift.brightdigit.com](https://learningswift.brightdigit.com) and speak at conferences frequently about life, career, dev work and of course ... Swift.

**Please reach out to [me](http://twitter.com/leogdion) if you have any questions.**

---

## <i class="el el-wrench"></i> Technical Details

For those interested in the technical details:

* [Server-Side Swift with Vapor 4](https://vapor.codes)
* PostgreSQL Database with Fluent for Vapor
* [Job Queue via Vapor Queues Fluent Driver](https://github.com/m-barthelemy/vapor-queues-fluent-driver) by [Matthieu Barthélemy](https://github.com/m-barthelemy)
* [Plot by John Sundell](https://github.com/johnsundell/plot) for HTML Rendering
* [Ink by John Sundell](https://github.com/JohnSundell/Ink) for Markdown Parsing
* [Milligram for CSS](https://milligram.io)
* [Elusive Icons for Icons](http://elusiveicons.com)

Feel free to check out [the GitHub repositoy](https://github.com/brightdigit/OrchardNest) to learn more about how the site works.

We are open to adding more feeds and features. If you are interested in learning more, check out [our support page for details.](/support)
38 changes: 36 additions & 2 deletions Resources/Views/support.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,40 @@
---
description: Support and FAQ
---
# Support
# <i class="el el-question-sign"></i> Support

Coming Soon...
Here are some answers to frequently we've received:

## <i class="el el-check"></i> Add & Removing Sites

### How can I add my RSS to this site?

Like I said in the about page, **this site is completely sourced from Dave Verwer's iOS Dev Directory.** If I am missing your site I highly recommend checking out Dave's [guidence on how to add a site](https://iosdevdirectory.com/contributing/).

### I've already added my RSS to the iOS Dev Directory but I don't see it here. What's going on here?

The site is updated 3 times a day so we should pick up your RSS feed. **There is a chance that your RSS feed is invalid or there's a bug in the parser.** In that case, file a [GitHub issue](https://github.com/brightdigit/OrchardNest/issues) and I can take a look to see why that is.

## <i class="el el-user"></i> About Me & Orchardnest

### Can I get the technical details of how this site work?

Yep, it's on **[the About page](/about)**. If there anything more you want to learn about how OrchardNest works, contact [me.](https://twitter.com/leogdion)

### Who made this site?

I did. [Leo Dion](https://twitter.com/leogdion). You can [read more about me here.](/about)

## <i class="el el-idea"></i> Future Plans

### I have some ideas for the site! Who do I send them to?

[GitHub Issue!](https://github.com/brightdigit/OrchardNest/issues) That's probably the best place for now... and thanks for asking! I want to make this an informative and welcoming place for the community so suggestions are very helpful to me.

### Is there any chance for an app?

Yes that's definitley on the roadmap. Once I feel comfortable with the way this web site works, I'll be moving onto a _universal_ app.

### What are your other future plans for the site?

You can always take a look at the **[GitHub issue list](https://github.com/brightdigit/OrchardNest/issues)**. For me, **the most important thing is keeping content fresh and helpful to Swift and iOS developers.** Some content from the RSS feed may not be what this community is interested in. So it's important to me to weigh various feeds and articles so the content is fresh, engaging, and relavant.
41 changes: 29 additions & 12 deletions Sources/OrchardNestServer/Controllers/Routing/HTMLController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@ import Vapor

struct HTMLController {
let views: [String: Markdown]

static let yearFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy"
return formatter
}()

static let dateFormatter: DateFormatter = {
let formatter = DateFormatter()
formatter.timeStyle = .short
Expand Down Expand Up @@ -45,8 +52,8 @@ struct HTMLController {
}
return entries
}
.flatMapEachThrowing {
try EntryItem(entry: $0)
.mapEachCompact {
try? EntryItem(entry: $0)
}
.map { (items) -> HTML in
HTML(
Expand All @@ -66,7 +73,8 @@ struct HTMLController {
}
)
)
)
),
.footer()
)
)
}
Expand All @@ -82,17 +90,24 @@ struct HTMLController {
}

let html = HTML(
.head(withSubtitle: "Support and FAQ", andDescription: view.metadata["description"] ?? name),
.head(
withSubtitle: view.metadata["description"] ?? name,
andDescription: view.metadata["description"] ?? name
),
.body(
.header(),
.main(
.class("container"),
.filters(),
.section(
.class("row"),
.raw(view.html)
.article(
.class("page column \(name)"),
.raw(view.html)
)
)
)
),
.footer()
)
)

Expand All @@ -108,8 +123,8 @@ struct HTMLController {
.filter(Channel.self, \Channel.$id == channel)
.limit(32)
.all()
.flatMapEachThrowing {
try EntryItem(entry: $0)
.mapEachCompact {
try? EntryItem(entry: $0)
}
.map { (items) -> HTML in
HTML(
Expand All @@ -128,7 +143,8 @@ struct HTMLController {
}
)
)
)
),
.footer()
)
)
}
Expand All @@ -141,8 +157,8 @@ struct HTMLController {
.filter(Channel.self, \Channel.$language.$id == "en")
.limit(32)
.all()
.flatMapEachThrowing {
try EntryItem(entry: $0)
.mapEachCompact {
try? EntryItem(entry: $0)
}
.map { (items) -> HTML in
HTML(
Expand All @@ -161,7 +177,8 @@ struct HTMLController {
}
)
)
)
),
.footer()
)
)
}
Expand Down
55 changes: 51 additions & 4 deletions Sources/OrchardNestServer/HTML.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public extension Node where Context == HTML.BodyContext {
.class("podcast-players"),
.li(
.a(
.target(.blank),
.href("https://podcasts.apple.com/podcast/id\(appleId)"),
.img(
.src("/images/podcast-players/apple/icon.svg"),
Expand All @@ -37,6 +38,7 @@ public extension Node where Context == HTML.BodyContext {
),
.li(
.a(
.target(.blank),
.href("https://overcast.fm/itunes\(appleId)"),
.img(
.src("/images/podcast-players/overcast/icon.svg"),
Expand All @@ -55,6 +57,7 @@ public extension Node where Context == HTML.BodyContext {
),
.li(
.a(
.target(.blank),
.href("https://castro.fm/itunes/\(appleId)"),
.img(
.src("/images/podcast-players/castro/icon.svg"),
Expand All @@ -73,6 +76,7 @@ public extension Node where Context == HTML.BodyContext {
),
.li(
.a(
.target(.blank),
.href("https://podcasts.apple.com/podcast/id\(appleId)"),
.img(
.src("/images/podcast-players/pocketcasts/icon.svg"),
Expand Down Expand Up @@ -121,11 +125,12 @@ public extension Node where Context == HTML.BodyContext {
.class("column"),
.li(.a(.href("/"), .i(.class("el el-home")), .text(" Home"))),
.li(.a(.href("/about"), .i(.class("el el-info-circle")), .text(" About"))),
.li(.a(.href("/support"), .i(.class("el el-question-sign")), .text(" Support")))
.li(.a(.href("/support"), .i(.class("el el-question-sign")), .text(" Support"))),
.li(.a(.href("https://iosdevdirectory.com/contributing"), .target(.blank), .i(.class("el el-plus-sign")), .text(" Add a Site")))
),
.ul(.class("float-right column"),
.li(.a(.href("https://github.com/brightdigit/OrchardNest"), .i(.class("el el-github")), .text(" GitHub"))),
.li(.a(.href("https://twitter.com/OrchardNest"), .i(.class("el el-twitter")), .text(" Twitter"))))
.li(.a(.href("https://github.com/brightdigit/OrchardNest"), .target(.blank), .i(.class("el el-github")), .text(" GitHub"))),
.li(.a(.href("https://twitter.com/OrchardNest"), .target(.blank), .i(.class("el el-twitter")), .text(" Twitter"))))
),
.div(
.class("row"),
Expand Down Expand Up @@ -191,14 +196,53 @@ public extension Node where Context == HTML.DocumentContext {
}
}

public extension Node where Context == HTML.BodyContext {
static func year(fromDate date: Date = Date()) -> Self {
text(HTMLController.yearFormatter.string(from: date))
}
}

public extension Node where Context == HTML.BodyContext {
static func footer() -> Self {
return footer(
.class("container"),
.div(
.class("row"),
.span(
.class("column"),
.hr(),
.span(
.text("Site Designed and Maintained by "),
.a(
.target(.blank),
.href("https://twitter.com/leogdion"),
.text("Leo Dion. ")
)
),
.span(
.a(
.target(.blank),
.href("https://brightdigit.com"),
.text("Bright Digit, LLC")
),
.text(". Copyright ©"),
.year()
)
)
)
)
}
}

public extension Node where Context == HTML.ListContext {
static func li(forEntryItem item: EntryItem, formatDateWith formatter: DateFormatter) -> Self {
return
.li(
.class("blog-post"),

.id("entry-\(item.id.base32Encoded)"),
.a(
.href(item.url),
.target(.blank),
.class("title"),
.h3(
.i(.class("el el-\(item.category.elClass)")),
Expand All @@ -221,6 +265,7 @@ public extension Node where Context == HTML.ListContext {
.class("video-content"),
.a(
.href(item.url),
.target(.blank),
.img(
.src("https://img.youtube.com/vi/\($0)/mqdefault.jpg"),
.alt(item.title)
Expand Down Expand Up @@ -268,6 +313,7 @@ public extension Node where Context == HTML.ListContext {
),
.unwrap(item.channel.twitterHandle) {
.a(
.target(.blank),
.href("https://twitter.com/\($0)"),
.class("button twitter-handle"),
.i(.class("el el-twitter")),
Expand All @@ -281,6 +327,7 @@ public extension Node where Context == HTML.ListContext {
.ul(
.li(
.a(
.target(.blank),
.class("button"),
.href(item.twitterShareLink),
.i(.class("el el-twitter")),
Expand Down
Empty file added orchardnest.sql
Empty file.

0 comments on commit 2db12f7

Please sign in to comment.