Guidelines¶
This file contains guidelines for code development.
Tip
For general Go coding practices, please refer to the following official Go documentation:
The guidelines in this document are specific to PixivFE and should be followed in addition to the general Go best practices.
Naming conventions¶
Files¶
- Directory names must use snake_case.
- File names must use kebab-case (lowercase with hyphens).
- All characters in directory and file names must be lowercase.
Code¶
Variables¶
- Local variables should be named using camelCase with an initial lowercase letter.
- Global variables must be named using PascalCase (CamelCase with an initial uppercase letter).
- Environment variables must be named using SCREAMING_SNAKE_CASE (all uppercase with underscores).
- Variable names should not contain any special characters.
Adding features¶
- Edit the
build.sh
if you want to create scripts that help with the process of developing and/or using PixivFE. - Don't create or add any shell files or configuration files of external programs in the root directory unless necessary.
- Add comments where necessary to explain complex logic or non-obvious code behavior.
- External libraries should only be added with prior notice.
Repository structure¶
assets/
: Static files (images, CSS, JS) and site templates.config/
: Handle configurations for the server.config.go
: Parses environment variables and passes down the configurations.proxy_list.go
: Contains the built-in third-party image proxy list.
core/
: Makes requests to Pixiv's server and parses information into structured data.doc/
: Contains documentation for general users and developers.server/
: The web server.audit/
: Audits requests made by PixivFE to external APIs.handlers/
: Contains middlewares for logging, rate limiting, error handling, etc.proxy_checker/
: The image proxy checker.request_context/
: Manages request-specific context information.routes/
: Route handling. Pages will be rendered here.session/
: Handles user's options.template/
: Core template renderer and template functions.token_manager/
: Manages and rotates API tokens with load balancing and error handling.utils/
: Other utilities.