You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+43-10Lines changed: 43 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -4,24 +4,38 @@ A search aggregator for finding Minecraft: Java Edition server plugins on [Spigo
4
4
5
5
### Live Application: [https://mcpluginfinder.com](https://mcpluginfinder.com)
6
6
7
+
## Elevator Pitch
8
+
9
+
As a Minecraft server owner, have you ever been annoyed when trying to find a plugin? Do I have to search for it on Spigot? Or maybe it's on Modrinth? Or Hangar? And on top of all that, the plugin developer might have only posted their latest version on some platforms but not others. What a mess.
10
+
11
+
MC Plugin Finder seeks to solve this problem by being the one-stop shop for searching all three of these platforms simultaneously, thanks to their public APIs. You can filter and sort your search results as desired, and you can compare versions of the same plugin on each platform to ensure that you are getting the latest version.
12
+
7
13
## How it Works
8
14
9
-
MC Plugin Finder has two main components: The **ingest** tool and the **web** app.
15
+
MC Plugin Finder has two main components: The **ingest tool** and the **web app**.
16
+
17
+
The **ingest tool** is a CLI application that retrieves plugin project data from the [Spiget API](https://spiget.org/) (for Spigot), [Modrinth API](https://docs.modrinth.com/), and [Hangar API](https://hangar.papermc.io/api-docs). The tool runs daily to update the database with the latest plugin information. It also considers projects from different plugin repositories to be the same if they **share the same source code repository URL**.
10
18
11
-
The **ingest** tool is a CLI application that retrieves plugin project data from the [Spiget API](https://spiget.org/) (for Spigot), [Modrinth API](https://docs.modrinth.com/), and [Hangar API](https://hangar.papermc.io/api-docs). The tool runs once per day to update the database with the latest projects, and then creates a common database view for those projects, merging some projects together if they **share the same source code repository URL**.
19
+
For example, suppose there was a project named "Foo" on Spigot and another project named "Bar" on Modrinth, and both projects have `https://github.com/example/asdf` as their source code repository URL. Both projects would be considered the same on MC Plugin Finder, even though their project names are different.
12
20
13
-
For example, suppose there was a project named "Foo" on Spigot and another project named "Bar" on Modrinth, and both projects have `https://github.com/username/repo` as their source code repository URL. Both projects would be considered the same on MC Plugin Finder, even though their project names are different.
21
+
On the other hand, if there were two projects named "Baz" on Spigot and Modrinth each, but the plugin developer forgot to add a source code URL to one of these plugin repositories, then these projects would **not**be considered be the same on MC Plugin Finder, even though their project names match.
14
22
15
-
MC Plugin Finder will only recognize URLs from these source code repositories:
23
+
MC Plugin Finder will only recognize URLs from these source code repository hosts:
16
24
-[github.com](https://github.com)
17
25
-[gitlab.com](https://gitlab.com)
18
26
-[bitbucket.org](https://bitbucket.org)
19
27
-[codeberg.org](https://codeberg.org)
20
28
21
-
The **web** app allows users to search the projects in the common database view.
29
+
The **web app** allows users to search the database for plugins.
30
+
31
+
The MC Plugin Finder hosted infrastructure runs an instance of [imageproxy](https://github.com/willnorris/imageproxy) to cache plugin project icons from Modrinth and Hangar. This reduces the load on the Modrinth and Hangar CDNs, and provides improved image loading performance. Icon data for Spigot-hosted plugins are provided directly by the Spiget API and stored in the database, so no proxy or caching is needed in that case.
22
32
23
33
## Development Setup
24
34
35
+
### Rust
36
+
37
+
Install [rustup](https://www.rust-lang.org/tools/install) and the latest version of Rust.
38
+
25
39
Add the wasm32 target:
26
40
-`rustup target add wasm32-unknown-unknown`
27
41
@@ -30,11 +44,14 @@ Install Cargo extensions:
30
44
-`cargo install cargo-nextest`
31
45
-`cargo install cargo-leptos`
32
46
33
-
### Cornucopia
47
+
Build the workspace:
48
+
-`cargo build --workspace`
49
+
50
+
### PostgreSQL
34
51
35
52
Ensure that you have Docker or Podman installed on your system. For more details, see the [Cornucopia installation instructions](https://cornucopia-rs.netlify.app/book/introduction/installation).
36
53
37
-
Setup the initial schema on your database by running [schema.sql](https://github.com/Frumple/mc-plugin-finder/blob/main/schema.sql) on it.
54
+
Setup the initial schema on your PostgreSQL database by running [schema.sql](https://github.com/Frumple/mc-plugin-finder/blob/main/schema.sql) on it.
38
55
39
56
Set the database settings in the .env file as desired:
40
57
```
@@ -45,10 +62,24 @@ MCPF_DB_PORT=5432
45
62
MCPF_DB_NAME=mc_plugin_finder
46
63
```
47
64
48
-
Regenerate the cornucopia.rs file after making any changes to queries:
0 commit comments