Style updates, doc updates
This commit is contained in:
		
							
								
								
									
										38
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								README.md
									
									
									
									
									
								
							@ -14,18 +14,46 @@ Therefore, `la sampu cu sampu lo ka samtci`!
 | 
			
		||||
 | 
			
		||||
- [Haskell](https://www.haskell.org)
 | 
			
		||||
- [Twain](https://github.com/alexmingoia/twain)
 | 
			
		||||
- [Lucid2](https://chrisdone.com/posts/lucid2)
 | 
			
		||||
- [Lucid](https://github.com/chrisdone/lucid)
 | 
			
		||||
- [Clay](https://github.com/sebastiaanvisser/clay)
 | 
			
		||||
 | 
			
		||||
## Goal
 | 
			
		||||
 | 
			
		||||
Provide a simple blog engine that is easily customizable via HTML fragments.
 | 
			
		||||
 | 
			
		||||
## Deployment
 | 
			
		||||
## Build and Deployment
 | 
			
		||||
 | 
			
		||||
We're not there yet! This project is built and packaged with Nix,
 | 
			
		||||
so I will provide directions on deploying with Nix as well as via OCI 
 | 
			
		||||
containers once there's something viable to run.
 | 
			
		||||
Only Nix build instructions are provided below.
 | 
			
		||||
 | 
			
		||||
### No Containers
 | 
			
		||||
1) Clone this repository
 | 
			
		||||
2) Build the application (with flakes enabled): `nix build '.#'`
 | 
			
		||||
3) Set the environment variables
 | 
			
		||||
    - File: `cp data/.env.example ./.env; $EDITOR ./.env`
 | 
			
		||||
    - If you want to set them in a different way, you already know how.
 | 
			
		||||
4) Run the application: `./result/bin/sampu`
 | 
			
		||||
 | 
			
		||||
### Containers
 | 
			
		||||
 | 
			
		||||
1) Clone this repository
 | 
			
		||||
2) Build the container image (with flakes enabled): `nix build .#sampu-container`
 | 
			
		||||
3) Load the container image: `podman load -i result`
 | 
			
		||||
4) Run the container using your favorite orchestrator or...
 | 
			
		||||
5) Use a NixOS configuration:
 | 
			
		||||
```
 | 
			
		||||
virtualisation.oci-containers.containers.sampu = {
 | 
			
		||||
  image = "sampu";
 | 
			
		||||
  ports = [ "${SAMPUR_EXTERNAL_PORT}:3000" ];
 | 
			
		||||
  volumes = [
 | 
			
		||||
    "/PATH/TO/SAMPU/data:/app/data"
 | 
			
		||||
  ];
 | 
			
		||||
  environment = {
 | 
			
		||||
    SAMPU_PORT = "3000";
 | 
			
		||||
    SAMPU_TITLE = "Your Blog Title Here!";
 | 
			
		||||
    SAMPU_BASEURL = "http://example.public.tld"; 
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
```
 | 
			
		||||
## Development and Support
 | 
			
		||||
 | 
			
		||||
Per the permissive ISC license, you are free to do what you wish with this 
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										0
									
								
								data/assets/public/test
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								data/assets/public/test
									
									
									
									
									
										Normal file
									
								
							@ -1,6 +1,6 @@
 | 
			
		||||
cabal-version:   3.0
 | 
			
		||||
name:            sampu
 | 
			
		||||
version:         0.6.0
 | 
			
		||||
version:         0.7.0
 | 
			
		||||
license:         ISC
 | 
			
		||||
author:          James Eversole
 | 
			
		||||
maintainer:      james@eversole.co
 | 
			
		||||
@ -28,6 +28,7 @@ executable sampu
 | 
			
		||||
                      , time                  >= 1.12.0
 | 
			
		||||
                      , twain                 >= 2.1.0.0
 | 
			
		||||
                      , wai-extra             >= 3.0 && < 3.2
 | 
			
		||||
                      , wai-middleware-static >= 0.9.0
 | 
			
		||||
                      , warp                  == 3.3.25
 | 
			
		||||
                      , xml-conduit           >= 1.9.1.0
 | 
			
		||||
    hs-source-dirs:     src
 | 
			
		||||
 | 
			
		||||
@ -7,6 +7,7 @@ import           Control.Monad                        ( mapM_ )
 | 
			
		||||
import           Data.String                          ( fromString )
 | 
			
		||||
import           Network.Wai.Handler.Warp             ( Port, run )
 | 
			
		||||
import           Network.Wai.Middleware.RequestLogger ( logStdout, logStdoutDev )
 | 
			
		||||
import           Network.Wai.Middleware.Static        ( staticPolicy, noDots, addBase, (>->) )
 | 
			
		||||
import           System.FilePath                      ( takeFileName )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -24,7 +25,9 @@ main postNames = do
 | 
			
		||||
 | 
			
		||||
-- These Middlewares are executed before any routes are reached.
 | 
			
		||||
preProcessors :: [Middleware]
 | 
			
		||||
preProcessors  = [logStdoutDev]
 | 
			
		||||
preProcessors  = [ logStdoutDev
 | 
			
		||||
                 , staticPolicy (noDots >-> addBase "data/assets/public")
 | 
			
		||||
                 ]
 | 
			
		||||
 | 
			
		||||
-- These Middlewares are executed after all other routes are exhausted
 | 
			
		||||
postProcessors :: [Middleware]
 | 
			
		||||
 | 
			
		||||
@ -17,15 +17,16 @@ composedStyles :: Css
 | 
			
		||||
composedStyles = do
 | 
			
		||||
  core_
 | 
			
		||||
  main_
 | 
			
		||||
  nav_
 | 
			
		||||
  notFound_
 | 
			
		||||
  postList_
 | 
			
		||||
  nav_
 | 
			
		||||
  mobileFriendly_
 | 
			
		||||
 | 
			
		||||
core_ :: Css
 | 
			
		||||
core_ = do
 | 
			
		||||
  a_
 | 
			
		||||
  body_
 | 
			
		||||
  code_
 | 
			
		||||
  footer_
 | 
			
		||||
  html_
 | 
			
		||||
  p_
 | 
			
		||||
@ -39,11 +40,14 @@ a_ = do
 | 
			
		||||
body_ :: Css
 | 
			
		||||
body_ = do
 | 
			
		||||
  body ? do
 | 
			
		||||
    fontFamily   [] [monospace]
 | 
			
		||||
    fontSize   $ em 1.25
 | 
			
		||||
    fontWeight $ weight 300
 | 
			
		||||
    textAlign    start
 | 
			
		||||
    margin       (em 0) auto (em 0) auto
 | 
			
		||||
    display       flex
 | 
			
		||||
    minHeight   $ vh 100
 | 
			
		||||
    flexDirection column
 | 
			
		||||
    fontFamily    [] [monospace]
 | 
			
		||||
    fontSize    $ em 1.25
 | 
			
		||||
    fontWeight  $ weight 300
 | 
			
		||||
    textAlign     start
 | 
			
		||||
    margin        (em 0) auto (em 0) auto
 | 
			
		||||
    strong ? do
 | 
			
		||||
      fontWeight    $ weight 600
 | 
			
		||||
    li ? do
 | 
			
		||||
@ -52,11 +56,10 @@ body_ = do
 | 
			
		||||
footer_ :: Css
 | 
			
		||||
footer_ = do
 | 
			
		||||
  footer ? do
 | 
			
		||||
    position          absolute
 | 
			
		||||
    margin            (em 0) (em 0) (em 0) (em 0)
 | 
			
		||||
    bottom            (em 0)
 | 
			
		||||
    margin            auto (em 0) (em 0) (em 0)
 | 
			
		||||
    width           $ pct 100
 | 
			
		||||
    backgroundColor $ rgba 109 146 173 0.3
 | 
			
		||||
    backgroundColor   terColor
 | 
			
		||||
    textAlign         center  
 | 
			
		||||
    padding           (em 1) (em 0) (em 1) (em 0)
 | 
			
		||||
    boxSizing         borderBox
 | 
			
		||||
@ -76,13 +79,14 @@ html_ = do
 | 
			
		||||
p_ :: Css
 | 
			
		||||
p_ = do
 | 
			
		||||
  p ? do
 | 
			
		||||
    margin (em 0.4) (em 0) (em 0.4) (em 0)
 | 
			
		||||
    margin (em 1) (em 0) (em 0.6) (em 0)
 | 
			
		||||
 | 
			
		||||
main_ :: Css
 | 
			
		||||
main_ = do
 | 
			
		||||
  ".main" ? do
 | 
			
		||||
    margin     (em 0) auto (em 0) auto
 | 
			
		||||
    maxWidth $ pct 60
 | 
			
		||||
    minWidth $ pct 40
 | 
			
		||||
 | 
			
		||||
notFound_ :: Css
 | 
			
		||||
notFound_ = do
 | 
			
		||||
@ -97,7 +101,18 @@ notFound_ = do
 | 
			
		||||
postList_ :: Css
 | 
			
		||||
postList_ = do
 | 
			
		||||
  ".postList" ? do
 | 
			
		||||
    margin   (em 0) auto (em 0) auto
 | 
			
		||||
    fontSize (em 1.5)
 | 
			
		||||
    minWidth (pct 60)
 | 
			
		||||
    maxWidth (pct 95)
 | 
			
		||||
    overflow scroll
 | 
			
		||||
 | 
			
		||||
code_ :: Css
 | 
			
		||||
code_ = do
 | 
			
		||||
  code ? do
 | 
			
		||||
    color           priColor
 | 
			
		||||
    backgroundColor terColor
 | 
			
		||||
    overflowX       scroll
 | 
			
		||||
 | 
			
		||||
nav_ :: Css
 | 
			
		||||
nav_ = do
 | 
			
		||||
@ -107,7 +122,7 @@ nav_ = do
 | 
			
		||||
    textAlign   center
 | 
			
		||||
  ".mainNav"      ? do
 | 
			
		||||
    margin      (em 0) auto (em 0) auto
 | 
			
		||||
    padding     (em 0) (em 0) (em 0) (em 0)
 | 
			
		||||
    padding     (em 0.5) (em 0.5) (em 0.5) (em 0.5)
 | 
			
		||||
    overflow    hidden
 | 
			
		||||
    boxShadow . pure $ bsColor "#ccc" $ shadowWithBlur (px 4) (px 4) (px 6)
 | 
			
		||||
    display     inlineFlex
 | 
			
		||||
 | 
			
		||||
@ -37,9 +37,9 @@ basePost :: Html () -> Html ()
 | 
			
		||||
basePost content = div_ [class_ "main"] content
 | 
			
		||||
 | 
			
		||||
postIndex :: [FilePath] -> Html ()
 | 
			
		||||
postIndex postNames = div_ [class_ "main"] $ do
 | 
			
		||||
postIndex postNames = div_ [class_ "postList"] $ do
 | 
			
		||||
  h1_ [class_ "title"] "All Posts"
 | 
			
		||||
  ul_ [class_ "postList"] $ do
 | 
			
		||||
  ul_ [] $ do
 | 
			
		||||
    mapM_
 | 
			
		||||
      (\x -> li_ $ a_ [href_ (pack $ "/posts/" ++ x)] (fromString x))
 | 
			
		||||
      postNames
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user