{"id":13655746,"url":"https://github.com/TheAngryByrd/MiniScaffold","last_synced_at":"2025-04-23T17:30:38.781Z","repository":{"id":19924669,"uuid":"86018469","full_name":"TheAngryByrd/MiniScaffold","owner":"TheAngryByrd","description":"F# Template for creating and publishing libraries targeting .NET 6.0 `net6.0` or console apps  .NET 6.0 `net6.0`.","archived":false,"fork":false,"pushed_at":"2023-11-19T17:23:12.000Z","size":1734,"stargazers_count":267,"open_issues_count":8,"forks_count":31,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-10-30T19:51:37.701Z","etag":null,"topics":["dotnet","dotnet-core","dotnet-framework","dotnet-template","fsharp","scaffold"],"latest_commit_sha":null,"homepage":"https://www.jimmybyrd.me/MiniScaffold/","language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheAngryByrd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":"TheAngryByrd"}},"created_at":"2017-03-24T02:26:26.000Z","updated_at":"2024-07-26T09:30:18.000Z","dependencies_parsed_at":"2023-02-18T23:40:15.134Z","dependency_job_id":"440f2efb-aeb5-4777-899d-299fe67bcc01","html_url":"https://github.com/TheAngryByrd/MiniScaffold","commit_stats":null,"previous_names":[],"tags_count":152,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAngryByrd%2FMiniScaffold","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAngryByrd%2FMiniScaffold/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAngryByrd%2FMiniScaffold/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheAngryByrd%2FMiniScaffold/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheAngryByrd","download_url":"https://codeload.github.com/TheAngryByrd/MiniScaffold/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223931582,"owners_count":17227256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnet","dotnet-core","dotnet-framework","dotnet-template","fsharp","scaffold"],"created_at":"2024-08-02T04:00:33.175Z","updated_at":"2025-04-23T17:30:38.764Z","avatar_url":"https://github.com/TheAngryByrd.png","language":"F#","funding_links":["https://github.com/sponsors/TheAngryByrd"],"categories":["F# #",".NET Core Templates","List"],"sub_categories":["Creating Type Providers","Libs"],"readme":"# MiniScaffold\n\n## What is MiniScaffold?\n\nThis is an [F# Template](https://docs.microsoft.com/en-us/dotnet/core/tools/custom-templates) for:\n\n- creating and publishing [libraries](https://docs.microsoft.com/en-us/dotnet/standard/glossary#library) targeting .NET 8.0 `net8.0`\n- creating and publishing [applications](https://docs.microsoft.com/en-us/dotnet/core/tutorials/cli-create-console-app#hello-console-app) targeting .NET 8.0 `net8.0`\n\n## Why use MiniScaffold\n\nThis takes away the ambiguity that developers face when creating an OSS project. Such as:\n\n- How do I structure my project?\n- How do I create repeatable builds?\n- Which test framework should I use?\n- How do I create releases easily?\n- What Issue/Pull Request templates should I use?\n- How should I go about creating documentation?\n- How do I get CI/CD setup easily?\n- What's the standard .gitignore file?\n- What other things would make it easier for me when starting off creating a project I might not even know about?\n\n## What does this include in the box?\n\n\n### All project types\n\n- [Standard project structure](https://docs.microsoft.com/en-us/dotnet/core/porting/project-structure) for your dotnet application\n- [Build Automation](https://en.wikipedia.org/wiki/Build_automation) tool via [FAKE](https://fake.build/)\n- [Package management](https://en.wikipedia.org/wiki/Package_manager) tool via [Paket](https://fsprojects.github.io/Paket/)\n- [Unit Testing](https://en.wikipedia.org/wiki/Unit_testing) via [Expecto](https://github.com/haf/expecto)\n- [Code Coverage](https://en.wikipedia.org/wiki/Code_coverage) via [Altcover](https://github.com/SteveGilham/altcover)\n    - Also builds an html report with [ReportGenerator](https://github.com/danielpalme/ReportGenerator)\n- [Code formatting](https://en.wikipedia.org/wiki/Programming_style) style via [Fantomas](https://github.com/fsprojects/fantomas)\n- `GitRelease` build step commits latest [CHANGELOG.md](https://keepachangelog.com/en/1.0.0/) in the body and creates a [git tag](https://git-scm.com/book/en/v2/Git-Basics-Tagging).\n    - If you [reference a Pull Request](https://github.com/TheAngryByrd/MiniScaffold/blob/master/CHANGELOG.md#0230-beta001---2020-02-07) in the `CHANGELOG.md` it will [update that Pull Request](https://github.com/TheAngryByrd/MiniScaffold/pull/186#ref-commit-b343218) with the version it was released in.\n- `GitHubRelease` build step publishes a [GitHub Release](https://help.github.com/en/articles/creating-releases) via the  [CHANGELOG.md](https://keepachangelog.com/en/1.0.0/) and adds any artifacts (nuget/zip/targz/etc).\n- [Continuous integration](https://en.wikipedia.org/wiki/Continuous_integration) via [GitHub Actions](https://github.com/features/actions)\n\n### For [Libraries](Content/Library/README.md)\n- Builds for `net8.0` - [Target Frameworks](https://docs.microsoft.com/en-us/dotnet/standard/frameworks)\n    - To build for `net8.0` [.NET 8.0 ](https://dotnet.microsoft.com/download) installed\n- [Sourcelink](https://github.com/dotnet/sourcelink) which enables a great source debugging experience for your users, by adding source control metadata to your built assets\n- [Documentation Generation](https://github.com/fsprojects/FSharp.Formatting) - Generates Documentation from markdown files, fsx files, and the [XML Documentation Comments](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/xmldoc/) from your library.\n- [Continuous deployment](https://en.wikipedia.org/wiki/Continuous_deployment) via [GitHub Actions](https://github.com/features/actions)\n    - [Publish to NuGet] - Pushes NuGet packages to [NuGet](https://docs.microsoft.com/en-us/nuget/what-is-nuget)\n        - Generates [Package Version](https://docs.microsoft.com/en-us/nuget/reference/nuspec#version) from `CHANGELOG.md`\n        - Adds [Package Release Notes](https://docs.microsoft.com/en-us/nuget/reference/nuspec#releasenotes) metadata from `CHANGELOG.md`\n    - [Documentation Publish] - Publish Documenation to [Github Pages](https://pages.github.com/)\n\n\n### For [Applications](Content/Console/README.md)\n- Basic argument parsing example via [Argu](https://fsprojects.github.io/Argu/)\n- Builds a `net8.0` application - [Target Frameworks](https://docs.microsoft.com/en-us/dotnet/standard/frameworks)\n    - To build for `net8.0`\n        - Have [.NET 8.0](https://dotnet.microsoft.com/download) installed\n- Builds for `win-x64`, `osx-x64` and `linux-x64` - [Runtime Identifiers](https://docs.microsoft.com/en-us/dotnet/core/rid-catalog).  Bundles the application via [dotnet-packaging](https://github.com/qmfrederik/dotnet-packaging)\n    - Bundles the `win-x64` application in a .zip file.\n    - Bundles the `osx-x64` application in a .tar.gz file.\n    - Bundles the `linux-x64` application in a .tar.gz file.\n\n---\n\n## Getting started quickly\n\n\n### Install the [dotnet template](https://docs.microsoft.com/en-us/dotnet/core/tools/custom-templates) from NuGet:\n\n```\ndotnet new install \"MiniScaffold::*\"\n```\n\nThen choose:\n\n- [I want to build a Library](Content/Library/README.md)\n\n```\ndotnet new mini-scaffold -n MyCoolNewLib --githubUsername MyGithubUsername\n```\n\n- [I want to build an Application](Content/Console/README.md)\n\n```\ndotnet new mini-scaffold -n MyCoolNewApp --githubUsername MyGithubUsername -ou console\n```\n\nThe scaffold defaults to using the `main` branch for releases. If you release from a different branch, you can use the `--releaseBranch \u003cbranch name\u003e` parameter to use your release branch instead of the default.\n\n---\n\n## Builds\n\nGitHub Actions |\n:---: |\n[![GitHub Actions](https://github.com/TheAngryByrd/MiniScaffold/workflows/Build%20master/badge.svg)](https://github.com/TheAngryByrd/MiniScaffold/actions?query=branch%3Amaster) |\n[![Build History](https://buildstats.info/github/chart/TheAngryByrd/MiniScaffold)](https://github.com/TheAngryByrd/MiniScaffold/actions?query=branch%3Amaster) |\n\n\n## NuGet\n\n\nStable | Prerelease\n:---: | :---:\n[![NuGet Badge](https://buildstats.info/nuget/MiniScaffold)](https://www.nuget.org/packages/MiniScaffold/) | [![NuGet Badge](https://buildstats.info/nuget/MiniScaffold?includePreReleases=true)](https://www.nuget.org/packages/MiniScaffold/)\n\n---\n\n## Options\n\n### githubUserName\nThis is used to automatically configure author information in the NuGet package, as well as configure push urls for repo locations.\n\n### outputType\nDefaults to Library\n\nWhen set to either Console or Library project and the supporting infrastructure around their respective types.\n\n---\n\n\n## Known issues\n\n### Permission denied\n\n```\n-bash: ./build.sh: Permission denied\n```\n\nThis is because dotnet template loses permissions of files. (https://github.com/TheAngryByrd/MiniScaffold/pull/37) added a post hook to address this but this only fixes it for dotnet sdk 2.x users.  dotnet sdk 1.x will need to run `chmod +x ./build.sh`\n\n### Appveyor badge not scaffolded correctly\n\nAppveyor's conventions around generating URLs based on the project name has some nuances.  See [this issue](https://github.com/TheAngryByrd/MiniScaffold/issues/63) for details.\n\n\n---\n\n#### Example Projects using this template:\n* [Chessie.Hopac](https://github.com/TheAngryByrd/Chessie.Hopac)\n* [Marten.FSharp](https://github.com/TheAngryByrd/Marten.FSharp)\n* [FSharp.Control.WebSockets](https://github.com/TheAngryByrd/FSharp.Control.WebSockets)\n* [FSharp.Control.Redis.Streams](https://github.com/TheAngryByrd/FSharp.Control.Redis.Streams)\n* [FsLibLog](https://github.com/TheAngryByrd/FsLibLog)\n* [Giraffe.HotReload](https://github.com/baronfel/Giraffe.HotReload)\n* [EFCore.FSharp](https://github.com/efcore/EFCore.FSharp)\n\n\n#### This project uses the following projects:\n* Heavily inspired by [Project Scaffold](https://github.com/fsprojects/ProjectScaffold)\n* [Paket](https://fsprojects.github.io/Paket/)\n* [FAKE](https://fsharp.github.io/FAKE/)\n* [Expecto](https://github.com/haf/expecto)\n* [Buildstats.info](https://github.com/dustinmoris/CI-BuildStats)\n* [Source Link](https://github.com/ctaggart/SourceLink)\n* [AltCover](https://github.com/SteveGilham/altcover)\n* [ReportGenerator](https://github.com/danielpalme/ReportGenerator)\n* [Fantomas](https://github.com/fsprojects/fantomas)\n* [Argu](https://github.com/fsprojects/Argu)\n* [dotnet-packaging](https://github.com/qmfrederik/dotnet-packaging)\n* [FSharp.Formatting](https://github.com/fsprojects/FSharp.Formatting)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheAngryByrd%2FMiniScaffold","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTheAngryByrd%2FMiniScaffold","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheAngryByrd%2FMiniScaffold/lists"}