Add CC licensing info, favicon, general cleanup
19
LICENSE
@ -1,19 +0,0 @@
|
||||
Copyright © 2021 Garrett Mills
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the “Software”),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included
|
||||
in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
32
README.md
@ -1,31 +1,9 @@
|
||||
<center>
|
||||
<br>
|
||||
<img alt="The Extollo logo" src="https://static.garrettmills.dev/sites/extollo/docs/assets/logo/svg/Extollo-Icon-and-Text-LIGHT-Final.svg" height="150">
|
||||
<br><br>
|
||||
<b>extollo</b> - (v. <em>latin</em>) - to lift up, to elevate
|
||||
<br><br>
|
||||
Extollo is a <a href="https://www.gnu.org/philosophy/floss-and-foss.en.html" target="_blank">free & libre</a> application framework in TypeScript.
|
||||
</center>
|
||||
<hr>
|
||||
# `garrettmills.dev`
|
||||
|
||||
Built on principles of modularity, strict-typing, inversion-of-control, and developer ergonomics, Extollo enables developers to build maintainable, scalable, and expressive applications.
|
||||
This is my website, hosted at https://garrettmills.dev.
|
||||
|
||||
Node.js provides an excellent platform for quickly getting an application up and running, but this loose minimalism can lead to larger, more unweildy code-bases as your application grows. Extollo fixes this by providing an opinionated, robust framework and first-party modules that provide, among other things:
|
||||
It is implemented with my [Extollo framework](https://extollo.garrettmills.dev).
|
||||
|
||||
- Type-based dependency injection
|
||||
- Strongly-typed ORM with an expressive query-builder and models
|
||||
- Customizable session & caching interfaces
|
||||
- Modular, pre-compiled, nest-able routes
|
||||
- First-party, extensible command line tools
|
||||
- Unit-based application structure
|
||||
![](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)
|
||||
|
||||
## Getting Started
|
||||
Writing an application with Extollo is very straightforward if you are familiar with Node.js/TypeScript, or similar frameworks like Laravel.
|
||||
|
||||
Check out the [Getting Started](https://extollo.garrettmills.dev/pages/Documentation/Getting-Started.html) page on the documentation site for more information.
|
||||
|
||||
## License & Philosophy
|
||||
The Extollo project is, and will always be, free & libre software. The framework itself is open-source available [here](https://code.garrettmills.dev/Extollo), and is licensed under the terms of the MIT license. See the LICENSE file for more information.
|
||||
|
||||
## Contributing
|
||||
Have an improvement or fix to Extollo? Contributors are always welcome. See the CONTRIBUTING.md file for next steps.
|
||||
This work is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/).
|
||||
|
@ -1,4 +0,0 @@
|
||||
DEBUG_MODE=true
|
||||
EXTOLLO_LOGGING_LEVEL=6
|
||||
DATABASE_PASSWORD=extollo
|
||||
DATABASE_HOST=db01.platform.local
|
@ -1,4 +1,4 @@
|
||||
import { env } from "@extollo/lib";
|
||||
import { env } from '@extollo/lib'
|
||||
|
||||
export default {
|
||||
connections: {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import {OAuth2Client, OAuth2Scope, env, /*uuid4*/} from '@extollo/lib'
|
||||
import {OAuth2Client, OAuth2Scope, env} from '@extollo/lib'
|
||||
|
||||
export default {
|
||||
secret: env('OAUTH2_SECRET'),
|
||||
@ -9,16 +9,5 @@ export default {
|
||||
description: 'access basic information about your account',
|
||||
},
|
||||
} as {[key: string]: OAuth2Scope},
|
||||
clients: {
|
||||
// 'test-1': {
|
||||
// id: 'test-1',
|
||||
// display: 'Test 1',
|
||||
// secret: env('TEST_CLIENT_SECRET', uuid4()),
|
||||
// allowedFlows: ['code'],
|
||||
// allowedScopeIds: ['user-info'],
|
||||
// allowedRedirectUris: [
|
||||
// 'http://localhost:1234/callback',
|
||||
// ],
|
||||
// },
|
||||
} as {[key: string]: OAuth2Client},
|
||||
clients: {} as {[key: string]: OAuth2Client},
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ import {
|
||||
RedisCache,
|
||||
CacheQueue,
|
||||
BusConnectorConfig, QueueConfig, SyncQueue
|
||||
} from "@extollo/lib"
|
||||
} from '@extollo/lib'
|
||||
|
||||
export default {
|
||||
debug: env('DEBUG_MODE', false),
|
||||
|
@ -1,4 +1,4 @@
|
||||
import {Controller, view, Injectable, SecurityContext, Inject, Collection, Config, Routing} from '@extollo/lib'
|
||||
import {Controller, view, Injectable, SecurityContext, Inject, Collection, Config, Routing, file, Application} from '@extollo/lib'
|
||||
import {WorkItem} from '../../models/WorkItem.model'
|
||||
import {FeedPost} from '../../models/FeedPost.model'
|
||||
|
||||
@ -75,4 +75,11 @@ export class Home extends Controller {
|
||||
|
||||
return query.get().collect()
|
||||
}
|
||||
|
||||
favicon() {
|
||||
return file(
|
||||
Application.getApplication()
|
||||
.appPath('resources', 'assets', 'favicon', 'favicon.ico')
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -36,12 +36,9 @@ Route
|
||||
|
||||
Route.any('/go/:short')
|
||||
.calls<GoLinks>(GoLinks, go => go.launch)
|
||||
|
||||
Route.get('/favicon.ico')
|
||||
.calls<Home>(Home, home => home.favicon)
|
||||
})
|
||||
.pre(SessionAuthMiddleware)
|
||||
.pre(PageView)
|
||||
|
||||
// Route.group('', () => {
|
||||
// Route.get('/dash')
|
||||
// .pre(AuthRequiredMiddleware)
|
||||
// .calls<Home>(Home, home => home.welcome)
|
||||
// }).pre(SessionAuthMiddleware)
|
||||
|
@ -1,15 +0,0 @@
|
||||
import {Inject, Injectable, Logging, BaseJob} from '@extollo/lib'
|
||||
|
||||
@Injectable()
|
||||
export default class LogMessage extends BaseJob {
|
||||
@Inject()
|
||||
protected readonly logging!: Logging
|
||||
|
||||
async execute(): Promise<void> {
|
||||
this.logging.info('Executing LogMessage...')
|
||||
await new Promise<void>(res => {
|
||||
setTimeout(() => res(), 3000)
|
||||
})
|
||||
this.logging.success('The LogMessage job has executed!')
|
||||
}
|
||||
}
|
BIN
src/app/resources/assets/cc-by-nc-sa-small.png
Normal file
After Width: | Height: | Size: 467 B |
BIN
src/app/resources/assets/cc-by-nc-sa.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
src/app/resources/assets/favicon/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
src/app/resources/assets/favicon/android-chrome-512x512.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
src/app/resources/assets/favicon/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
src/app/resources/assets/favicon/favicon-16x16.png
Normal file
After Width: | Height: | Size: 327 B |
BIN
src/app/resources/assets/favicon/favicon-32x32.png
Normal file
After Width: | Height: | Size: 628 B |
BIN
src/app/resources/assets/favicon/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
1
src/app/resources/assets/favicon/site.webmanifest
Normal file
@ -0,0 +1 @@
|
||||
{"name":"Garrett Mills | Developer, Speaker, Designer","short_name":"Garrett Mills","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
BIN
src/app/resources/assets/img/favicon.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
@ -19,15 +19,24 @@ head
|
||||
link(rel="alternate" href="/feed/atom.xml" title="Garrett Mills - Posts & Updates" type="application/atom+xml")
|
||||
link(rel="alternate" href="/feed/rss.xml" title="Garrett Mills - Posts & Updates" type="application/rss+xml")
|
||||
|
||||
link(rel='apple-touch-icon' sizes='180x180' href=asset('favicon/apple-touch-icon.png'))
|
||||
link(rel='manifest' href=asset('favicon/site.webmanifest'))
|
||||
link(rel='icon' type='image/png' sizes='32x32' href=asset('favicon/favicon-32x32.png'))
|
||||
link(rel='icon' type='image/png' sizes='16x16' href=asset('favicon/favicon-16x16.png'))
|
||||
link(rel='shortcut icon' href=asset('favicon/favicon.ico'))
|
||||
|
||||
body
|
||||
block content
|
||||
|
||||
footer
|
||||
.ff-tag(style="margin-right: 80px")
|
||||
a(href="https://www.mozilla.org/en-US/firefox/browsers/" target="_blank")
|
||||
img(src="/assets/ffox.png" width="75" style="margin-top: -1px")
|
||||
img(src=asset('ffox.png') width="75" style="margin-top: -1px")
|
||||
.by-line garrettmills
|
||||
.copy#tagline(title="my, aren't you curious...") copyright © #{(new Date()).getFullYear()} garrett mills
|
||||
.copyright
|
||||
a(href='https://creativecommons.org/licenses/by-nc-sa/4.0/' target='_blank')
|
||||
img(src=asset('cc-by-nc-sa-small.png') title='This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License')
|
||||
if false
|
||||
div.auth-container
|
||||
div.profile
|
||||
|
@ -1,14 +0,0 @@
|
||||
|
||||
export interface UserLogin {
|
||||
/**
|
||||
* @minLength 1
|
||||
* @maxLength 100
|
||||
*/
|
||||
username: string,
|
||||
|
||||
/**
|
||||
* @minLength 1
|
||||
* @maxLength 100
|
||||
*/
|
||||
password: string,
|
||||
}
|