sp-tarkov / forge

Mozilla Public License 2.0
2 stars 2 forks source link

Single Player Tarkov Logo

The Forge

License: MPL 2.0 Quality Control Action Status Test Action Status Discord Chat Patreon Fund

The Forge is a Laravel-based web application that provides a platform for the Single Player Tarkov community to share and discover user-generated content, such as mods, guides, and other tools. It is currently under heavy development. Please review this entire document before attempting to contribute, especially the "Development Discussion" section.

Development Environment Setup

We use Laravel Sail to mirror the services that are used in our production server in a local development environment. You can see detailed instructions on how to configure the full development environment or a lightweight development environment on the project wiki. The full development environment is recommended.

Available Services:

Service Access Via Application Access Via Host
MySQL mysql:3306 localhost:3306
Redis redis:6379 localhost:6379
Meilisearch meilisearch:7700 localhost:7700
Mailpit mailpit:1025 localhost:8025

Notable Routes

Service Authentication Access Via Host
Laravel Filament Admin Panel Via User Role http://localhost/admin
Redis Queue Management (Horizon) Via User Role http://localhost/horizon
Website Status (Pulse) Via User Role http://localhost/pulse
Meilisearch WebUI Local Only http://localhost:7700
Mailpit WebUI Local Only http://localhost:8025

Most of these connection settings should already be configured in the .env.full or .env.light example files. Simply save one of these (depending on your environment) as .env and adjust settings as needed.

Basic Usage Examples

Here are some basic commands to get started with Forge:

# Start the Docker containers in detached mode:
sail up -d
# View all of the available Artisan commands:
sail artisan
# Migrate and seed the database with test data:
sail artisan migrate:fresh –seed
# Run Laravel Horizon (the queue workers/monitor):
sail artisan horizon
# Sync the local database with the Meilisearch server (requires horizon to be running): 
sail artisan app:search-sync
# Install NPM dependencies from within the container:
sail npm install
# Start the development server:
sail npm run dev

More Information

For more information on Laravel development, please refer to the official documentation.

Development Discussion

Please note, we are very early in development and will likely not accept work that is not discussed beforehand.

Informal discussion regarding bugs, new features, and implementation of existing features takes place in the #website-general channel of the Single Player Tarkov Discord server. Refringe, the maintainer of Forge, is typically present in the channel on weekdays from 9am-5pm Eastern Time (ET), and sporadically present in the channel at other times.

If you propose a new feature, please be willing to implement at least some of the code that would be needed to complete the feature.

Which Branch?

The main branch is the default branch for Forge. This branch is used for the latest stable release of the site. The develop branch is used for the latest development changes. All feature branches should be based on the develop branch. All pull requests should target the develop branch.

Coding Style

Forge follows the PSR-2 coding standard and the PSR-4 autoloading standard. We use an automated Laravel Pint action to enforce the coding standard, though it's suggested to run your code changes through Pint before contributing. This can be done by configuring your IDE to format with Pint on save, or manually by running the following command:

./vendor/bin/sail pint

Security Vulnerabilities

If you discover a security vulnerability within Forge, please email Refringe at me@refringe.com. All security vulnerabilities will be promptly addressed.

Code of Conduct

The Forge development code of conduct is derived from the Ruby code of conduct. Any violations of the code of conduct may be reported to Refringe at me@refringe.com.