Browse Source

first commit

fusu 2 weeks ago
commit
ae49010a4f
1 changed files with 184 additions and 0 deletions
  1. 184 0
      README.md

+ 184 - 0
README.md

@@ -0,0 +1,184 @@
+# nunu-layout-basic - Basic Layout
+
+Nunu is an application scaffold based on Golang. Its name comes from a game character in League of Legends, a little boy riding on the shoulder of a yeti. Like Nunu, this project also stands on the shoulders of giants. It is a composition of various popular libraries from the Golang ecosystem, which can help you quickly build efficient and reliable applications.
+
+[简体中文介绍](https://github.com/go-nunu/nunu-layout-basic/blob/main/README_zh.md)
+
+![Nunu](https://github.com/go-nunu/nunu/blob/main/.github/assets/banner.png)
+
+## Documentation
+* [User Guide](https://github.com/go-nunu/nunu/blob/main/docs/en/guide.md)
+* [Architecture](https://github.com/go-nunu/nunu/blob/main/docs/en/architecture.md)
+* [Getting Started Tutorial](https://github.com/go-nunu/nunu/blob/main/docs/en/tutorial.md)
+
+## Features
+- **Gin**: https://github.com/gin-gonic/gin
+- **Gorm**: https://github.com/go-gorm/gorm
+- **Wire**: https://github.com/google/wire
+- **Viper**: https://github.com/spf13/viper
+- **Zap**: https://github.com/uber-go/zap
+- **Golang-jwt**: https://github.com/golang-jwt/jwt
+- **Go-redis**: https://github.com/go-redis/redis
+- **Testify**: https://github.com/stretchr/testify
+- **Sonyflake**: https://github.com/sony/sonyflake
+- **gocron**:  https://github.com/go-co-op/gocron
+- More...
+
+## Highlights
+* **Low Learning Curve and Customization**: Nunu encapsulates popular libraries that Gophers are familiar with. You can easily customize the application to meet specific requirements.
+* **High Performance and Scalability**: Nunu aims to be high-performance and scalable. It utilizes the latest technologies and best practices to ensure your application can handle high traffic and large data volumes.
+* **Security and Reliability**: Nunu uses stable and reliable third-party libraries to ensure the security and reliability of your application.
+* **Modularity and Extensibility**: Nunu is designed to be modular and extensible. You can easily add new features and functionalities by using third-party libraries or writing your own modules.
+* **Comprehensive Documentation and Test Coverage**: Nunu has comprehensive documentation and test coverage. It provides detailed documentation and examples to help you get started quickly. It also includes a test suite to ensure your application works as expected.
+
+## Nunu CLI
+
+![Nunu](https://github.com/go-nunu/nunu/blob/main/.github/assets/screenshot.jpg)
+
+## Directory Structure
+```
+.
+├── cmd
+│   └── server
+│       ├── main.go
+│       ├── wire.go
+│       └── wire_gen.go
+├── config
+│   ├── local.yml
+│   └── prod.yml
+├── internal
+│   ├── handler
+│   │   ├── handler.go
+│   │   └── user.go
+│   ├── middleware
+│   │   └── cors.go
+│   ├── model
+│   │   └── user.go
+│   ├── repository
+│   │   ├── repository.go
+│   │   └── user.go
+│   ├── server
+│   │   └── http.go
+│   └── service
+│       ├── service.go
+│       └── user.go
+├── pkg
+├── LICENSE
+├── README.md
+├── README_zh.md
+├── go.mod
+└── go.sum
+
+```
+
+This is a classic directory structure for a Golang project, which includes the following directories:
+
+- cmd: Contains the entry points of the application, including the main function and dependency injection code.
+  - server: The main entry point of the application, including the main function and dependency injection code.
+    - main.go: The main function used to start the application.
+    - wire.go: The dependency injection code generated using Wire.
+    - wire_gen.go: The dependency injection code generated using Wire.
+
+- config: Contains the configuration files of the application.
+  - local.yml: The configuration file for the local environment.
+  - prod.yml: The configuration file for the production environment.
+
+- internal: Contains the internal code of the application.
+  - handler: Contains the handlers for handling HTTP requests.
+    - handler.go: The common handler for handling HTTP requests.
+    - user.go: The handler for handling user-related HTTP requests.
+  - middleware: Contains the middleware code.
+    - cors.go: The CORS (Cross-Origin Resource Sharing) middleware.
+  - model: Contains the data model code.
+    - user.go: The user data model.
+  - repository: Contains the data access code.
+    - repository.go: The common interface for data access.
+    - user.go: The implementation of the user data access interface.
+  - server: Contains the server code.
+    - http.go: The implementation of the HTTP server.
+  - service: Contains the business logic code.
+    - service.go: The common interface for business logic.
+    - user.go: The implementation of the user business logic.
+
+- pkg: Contains the public packages of the application.
+- storage: Contains the storage files of the application.
+- go.mod: The Go module file.
+- go.sum: The dependency versions file for the Go module.
+
+## Requirements
+To use Nunu, you need to have the following software installed on your system:
+
+* Golang 1.16 or higher
+* Git
+
+### Installation
+
+You can install Nunu using the following command:
+
+```bash
+go install github.com/go-nunu/nunu@latest
+```
+
+### Creating a New Project
+
+You can create a new Golang project using the following command:
+
+```bash
+nunu new projectName
+```
+
+By default, it will pull from the GitHub repository, but you can also use a mirror repository for faster access:
+
+```
+// Use the basic template
+nunu new projectName -r https://gitee.com/go-nunu/nunu-layout-basic.git
+// Use the advanced template
+nunu new projectName -r https://gitee.com/go-nunu/nunu-layout-advanced.git
+```
+
+This command will create a directory named `projectName` and generate an elegant Golang project structure within it.
+
+### Creating Components
+
+You can create handlers, services, repositories, and models for your project using the following commands:
+
+```bash
+nunu create handler user
+nunu create service user
+nunu create repository user
+nunu create model user
+```
+or
+```
+nunu create all user
+```
+
+These commands will create components named `UserHandler`, `UserService`, `UserDao`, and `UserModel` respectively and place them in the correct directories.
+
+### Starting the Project
+
+You can quickly start your project using the following command:
+
+```bash
+nunu run
+```
+
+This command will start your Golang project and support hot-reloading of files.
+
+### Compiling wire.go
+
+You can quickly compile `wire.go` using the following command:
+
+```bash
+nunu wire
+```
+
+This command will compile your `wire.go` file and generate the required dependencies.
+
+## Contribution
+
+If you find any issues or have any improvement suggestions, please feel free to raise an issue or submit a pull request. Your contributions are highly appreciated!
+
+## License
+
+Nunu is released under the MIT License. See the [LICENSE](LICENSE) file for more information.