Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thuongtruong109/gouse
🧊 A modern essential Golang utility presets.
https://github.com/thuongtruong109/gouse
go godev golang library lodash module package parser preset testing utility vitepress
Last synced: about 12 hours ago
JSON representation
🧊 A modern essential Golang utility presets.
- Host: GitHub
- URL: https://github.com/thuongtruong109/gouse
- Owner: thuongtruong109
- License: mit
- Created: 2024-07-02T06:54:37.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-12-22T03:36:14.000Z (12 days ago)
- Last Synced: 2025-01-01T02:42:11.908Z (2 days ago)
- Topics: go, godev, golang, library, lodash, module, package, parser, preset, testing, utility, vitepress
- Language: Go
- Homepage: https://gouse.vercel.app
- Size: 7.51 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# ![Banner](/public/banner.png)
## 🧠 Why Gouse?
- Gouse is a modern essential [`Golang`](https://golang.org/) utility package delivering consistency, modularity, performance, & extras presets inspired by [`Lodash`](https://lodash.com/).
- Built on top of Go language, combined with others Go open-source packages.
- `Javascript` user-friendly syntax.
- No config - import as utility functions.
- Lightweight package: easy to use, chainable, and extendable, and available in various builds & module formats.
- Gouse provides a wide variety of available methods, taking the hassle out of working with arrays, numbers, objects, strings, etc. Each method has different features, so you can pick the ones that fit your project best.
- Comprehensive documentation and examples.
- Powerful package that is suitable for small to large projects and compatible with all OS platforms
- Thanks to Gouse, you can:
- Set up and scale projects rapidly.
- Handle complex logic use-cases such as database connection, build APIs, error handling, log management...
- Optimize performance and increase productivity.
- Build easily consistent systems with available functions.
- Avoid writing repetitive code and a unified code style.
- Reduce the number of lines of code and make it easier to read, understand, and maintain.
- Avoid compatibility conflicts and unexpected errors.
- And more...## ✨ Motivation
- Go has emerged as a server language, but it still doesn't have complete and consistent packages available to support coding development.
- Developers must write by hand or search manually. That wastes time and even causes many compatibility conflicts
- Must update each dependent package every time you update
- Unexpected errors can easily arise during execution
- Performance is not optimized
- The number of lines of code is very long that not easy to read and understand
- Code logic may not be consistent, making it difficult to maintain and scale👉 To address that need, Gouse was created as a powerful toolkit for Go developers, a collection of built-in functions and best practices that provide comprehensive, powerful, and reliable solutions. Trusted to build services, APIs, and web applications.
## 🚀 Module packages
> Below is a list of modules that Gouse supports. This project is still in development stage, so not all features are available.
✅ Api
✅ Array
✅ Cache
✅ Chart
✅ Config
✅ Console
✅ Connection
✅ Cron
✅ Crypto
✅ Date
✅ Function
✅ Helper
✅ I/O
✅ Logger
✅ Math
✅ Media
✅ Net
✅ Number
✅ OS
✅ Random
✅ Regex
✅ String
✅ Struct
✅ Time
✅ Type
- See more details at [Gouse Documentation](https://gouse.vercel.app)
## 📋 Requirements
> Compatibility with Go >= **`1.18`**
## 📦 Installation
```go
go get github.com/thuongtruong109/gouse
```## 🕯️ Quick Start
```go
package mainimport "github.com/thuongtruong109/gouse"
func main() {
gouse.Stater()
}
```## 🦄 Usage
- Using package directly in your module as ultra-lightweight utility functions.
```go
package mainimport "github.com/thuongtruong109/gouse"
func main() {
gouse.Print(gouse.Add(1, 2))
}
```- View more examples at [`sample`](https://gouse.vercel.app/receipts/array.html) folder.
## 📖 Documentation
- To read the completely package documentation guide, reference at [![Dev package](https://pkg.go.dev/badge/github.com/thuongtruong109/gouse)](https://pkg.go.dev/github.com/thuongtruong109/gouse)
## 📊 Benchmark
`GOOS`: windows
`GOARCH`: amd64
`CPU`: AMD Ryzen 5 5600U with Radeon Graphics (12) @ 2.300GHz
`ITERATIONS`: 5
`INPUT`: 1000000
## 📁 Project Structure
![Project Structure](https://raw.githubusercontent.com/thuongtruong109/gouse/diagram/project-structure.svg)
## 🛠️ Development
```bash
$ git clone https://github.com/thuongtruong109/gouse.git
```- Refer to the [`Contributing Commands`](.github/CONTRIBUTING.md#commands) section for more information on how to develop the project.
## 📝 Contributing
- We welcome your contributions! If you're looking for issues to work on, try looking at the good first issue list. We do our best to tag issues suitable for new external contributors with that label, so it's a great way to find something you can help with!
- Please read our [`Code of Conduct`](.github/CODE_OF_CONDUCT.md) before contributing.
- Refer to the [`Contributing Guide`](.github/CONTRIBUTING.md) for more information on how to get started.
## 📄 License
- Gouse is released under the [`MIT`](./LICENSE) License © 2024 [Tran Nguyen Thuong Truong](https://github.com/thuongtruong109).
- For more information, see the [`Licensing FAQs`](https://opensource.org/faq#mit-vs-bsd).
## 📌 Support
- The tool has been tested on a variety of inputs, but it's not perfect.
- For support in using Gouse, please reach out in the following venues:
- [`Raise Issues`](https://github.com/thuongtruong109/gouse/issues/new) - For generally applicable issues and feedback.
- [`Join Discussions`](https://github.com/thuongtruong109/gouse/discussions) - For ideas, questions, or issues regarding Gouse's design, development, and future.## 📜 Changelog
- Gouse is under active development. This means that new features, bug fixes, and breaking changes will be released frequently. We encourage you to keep the [`CHANGELOG`](CHANGELOG.md) open while upgrading to see what's new!
- For more information on how to use the changelog, please refer to [`Keeping a Changelog`](https://keepachangelog.com/en/1.0.0/).
## 🌸 Sponsor
- If you like this project, you can sponsor me on:
[![Github sponsor](https://img.shields.io/badge/GitHub_Sponsors-000000?style=for-the-badge&logo=github&logoColor=white)](https://sponsor.com/thuongtruong109)
[![Paypal](https://img.shields.io/badge/PayPal-00457C?style=for-the-badge&logo=paypal&logoColor=white)](https://paypal.me/thuongtruong109)
[![Kofi](https://img.shields.io/badge/ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/thuongtruong109)## 📮 Contact
- If you have any questions, please contact me:
[![Email](https://img.shields.io/badge/Gmail-D14836?style=for-the-badge&logo=gmail&logoColor=white)](mailto:[email protected])
[![Github](https://img.shields.io/badge/Github-000000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/thuongtruong109)
[![Linkedin](https://img.shields.io/badge/Linkedin-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://linkedin.com/in/thuongtruong109)
[![Facebook](https://img.shields.io/badge/Facebook-1877F2?style=for-the-badge&logo=facebook&logoColor=white)](https://facebook.com/thuongtruong109)## 🧬 Dependencies
- Gouse is built on top of the following below and others open-source projects
- Special thanks to the following dependencies that helped make this project possible:
- [Google UUID](https://github.com/google/uuid) - A fast and simple UUID library for Go 🔑
- [Survey v2](https://github.com/AlecAivazis/survey/v2) - A golang library for building interactive prompts with full support for windows and posix terminals 🙋
- [Bubbletea](https://github.com/charmbracelet/bubbletea) - A powerful little TUI framework 🏗
- [Go Cache](https://github.com/patrickmn/go-cache) - An in-memory key:value store/cache (similar to Memcached) 🗄
- [Crypto](https://golang.org/x/crypto) - A collection of cryptographic algorithms and protocols for Go 📦
- [Go eCharts](https://github.com/go-echarts/go-echarts) - 🎨 The adorable charts library for Golang 📊
- [Env config](https://github.com/kelseyhightower/envconfig) x [Go Toml](github.com/pelletier/go-toml) - A Go library for managing configuration data from files 📄
- [Minio Client Go v7](https://github.com/minio/minio-go) - MinIO Go Library for Amazon S3 compatible cloud storage 📦
- [Mongodb Go driver](https://github.com/mongo-driver) - The MongoDB supported driver for Go 📦
- [Redis Go v8](https://github.com/go-redis/redis) - Type-safe Redis client for Golang 📦
- [Cache for Go](github.com/patrickmn/go-cache) - An in-memory key:value store/cache (similar to Memcached) library for Go 🗄
- [Toml Go](github.com/pelletier/go-toml) - A Go library for managing configuration data from files 📄
- [Yaml](gopkg.in/yaml.v2) - A YAML support for the Go language 📄## 📚 References
- [Golang](https://golang.org/)
- [Golang Docs](https://pkg.go.dev/)
- [Lodash.js](https://lodash.com/)
- [Lodash collection](https://www.geeksforgeeks.org/lodash/?ref=header_search)
- [Javascript methods reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference)
- [File handling in Golang](https://www.cloudhadoop.com/2018/11/learn-golang-tutorials-file-directory.html)
- [Golang x Github Actions](https://github.com/brpaz/github-actions-demo-go)
- [Dynamic HTML](https://css-tricks.com/dynamic-page-replacing-content)
- [Profiling Go Programs](https://blog.golang.org/pprof) - [Pprof example](https://dev.to/immortalt/use-pprof-for-golang-program-memory-analysis-2cj6) - [Gws example](https://github.com/lxzan/gws)