diff --git a/doc/_static/css/custom.css b/doc/_static/css/custom.css
new file mode 100644
index 0000000000..28754fd7dd
--- /dev/null
+++ b/doc/_static/css/custom.css
@@ -0,0 +1,20 @@
+/* Center and make the title bold */
+.my-custom-card .grid-item-card-title {
+ text-align: center;
+ font-weight: bold;
+}
+
+/* Default style for hover content (hidden) */
+.my-custom-card .hover-content {
+ display: none;
+ text-align: center;
+}
+
+/* Show the hover content when hovering over the card */
+.my-custom-card:hover .default-title {
+ display: none;
+}
+
+.my-custom-card:hover .hover-content {
+ display: block;
+}
diff --git a/doc/conf.py b/doc/conf.py
index e3d58ca8f2..db16269991 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -109,8 +109,10 @@
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-# html_static_path = ['_static']
-
+html_static_path = ['_static']
+html_css_files = [
+ 'css/custom.css',
+]
html_favicon = "images/favicon-32x32.png"
diff --git a/doc/index.rst b/doc/index.rst
index ed443e4200..57a0c95443 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -51,6 +51,7 @@ SpikeInterface is made of several modules to deal with different aspects of the
overview
get_started/index
+ tutorials_custom_index
tutorials/index
how_to/index
modules/index
diff --git a/doc/tutorials_custom_index.rst b/doc/tutorials_custom_index.rst
new file mode 100644
index 0000000000..a058b0fed2
--- /dev/null
+++ b/doc/tutorials_custom_index.rst
@@ -0,0 +1,254 @@
+.. This page provides a custom index to the 'Tutorials' page, rather than the default sphinx-gallery
+.. generated page. The benefits of this are flexibility in design and inclusion of non-sphinx files in the index.
+..
+.. To update this index with a new documentation page
+.. 1) Copy the grid-item-card and associated ".. raw:: html" section.
+.. 2) change :link: to a link to your page. If this is an `.rst` file, point to the rst file directly.
+.. If it is a sphinx-gallery generated file, format the path as separated by underscore and prefix `sphx_glr`,
+.. pointing to the .py file. e.g. `tutorials/my/page.py` -> `sphx_glr_tutorials_my_page.py
+.. 3) Change :img-top: to point to the thumbnail image of your choosing. You can point to images generated
+.. in the sphinx gallery page if you wish.
+.. 4) In the `html` section, change the `default-title` to your pages title and `hover-content` to the subtitle.
+
+:orphan:
+
+TutorialsNew
+============
+
+Longer form tutorials about using SpikeInterface. Many of these are downloadable as notebooks or Python scripts so that you can "code along" with the tutorials.
+
+If you're new to SpikeInterface, we recommend trying out the :ref:`get_started/quickstart:Quickstart tutorial` first.
+
+Updating from legacy
+--------------------
+
+.. toctree::
+ :maxdepth: 1
+
+ tutorials/waveform_extractor_to_sorting_analyzer
+
+Core tutorials
+--------------
+
+These tutorials focus on the :py:mod:`spikeinterface.core` module.
+
+.. grid:: 1 2 2 3
+ :gutter: 2
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_core_plot_1_recording_extractor.py
+ :img-top: /tutorials/core/images/thumb/sphx_glr_plot_1_recording_extractor_thumb.png
+ :img-alt: Recording objects
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+
Recording objects
+ Manage loaded recordings in SpikeInterface
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_core_plot_2_sorting_extractor.py
+ :img-top: /tutorials/core/images/thumb/sphx_glr_plot_2_sorting_extractor_thumb.png
+ :img-alt: Sorting objects
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Sorting objects
+ Explore sorting extractor features
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_core_plot_3_handle_probe_info.py
+ :img-top: /tutorials/core/images/thumb/sphx_glr_plot_3_handle_probe_info_thumb.png
+ :img-alt: Handling probe information
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Handling probe information
+ Handle and visualize probe information
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_core_plot_4_sorting_analyzer.py
+ :img-top: /tutorials/core/images/thumb/sphx_glr_plot_4_sorting_analyzer_thumb.png
+ :img-alt: SortingAnalyzer
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ SortingAnalyzer
+ Analyze sorting results with ease
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_core_plot_5_append_concatenate_segments.py
+ :img-top: /tutorials/core/images/thumb/sphx_glr_plot_5_append_concatenate_segments_thumb.png
+ :img-alt: Append/Concatenate segments
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Append and/or concatenate segments
+ Combine segments efficiently
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_core_plot_6_handle_times.py
+ :img-top: /tutorials/core/images/thumb/sphx_glr_plot_6_handle_times_thumb.png
+ :img-alt: Handle time information
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Handle time information
+ Manage and analyze time information
+
+Extractors tutorials
+--------------------
+
+The :py:mod:`spikeinterface.extractors` module is designed to load and save recorded and sorted data, and to handle probe information.
+
+.. grid:: 1 2 2 3
+ :gutter: 2
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_extractors_plot_1_read_various_formats.py
+ :img-top: /tutorials/extractors/images/thumb/sphx_glr_plot_1_read_various_formats_thumb.png
+ :img-alt: Read various formats
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Read various formats
+ Read different recording formats efficiently
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_extractors_plot_2_working_with_unscaled_traces.py
+ :img-top: /tutorials/extractors/images/thumb/sphx_glr_plot_2_working_with_unscaled_traces_thumb.png
+ :img-alt: Unscaled traces
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Working with unscaled traces
+ Learn about managing unscaled traces
+
+Quality metrics tutorial
+------------------------
+
+The :code:`spikeinterface.qualitymetrics` module allows users to compute various quality metrics to assess the goodness of a spike sorting output.
+
+.. grid:: 1 2 2 3
+ :gutter: 2
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_qualitymetrics_plot_3_quality_mertics.py
+ :img-top: /tutorials/qualitymetrics/images/thumb/sphx_glr_plot_3_quality_mertics_thumb.png
+ :img-alt: Quality Metrics
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Quality Metrics
+ Evaluate sorting quality using metrics
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_qualitymetrics_plot_4_curation.py
+ :img-top: /tutorials/qualitymetrics/images/thumb/sphx_glr_plot_4_curation_thumb.png
+ :img-alt: Curation Tutorial
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Curation Tutorial
+ Learn how to curate spike sorting data
+
+Comparison tutorial
+-------------------
+
+The :code:`spikeinterface.comparison` module allows you to compare sorter outputs or benchmark against ground truth.
+
+.. grid:: 1 2 2 3
+ :gutter: 2
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_comparison_plot_5_comparison_sorter_weaknesses.py
+ :img-top: /tutorials/comparison/images/thumb/sphx_glr_plot_5_comparison_sorter_weaknesses_thumb.png
+ :img-alt: Sorter Comparison
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Sorter Comparison
+ Compare sorter outputs and assess weaknesses
+
+Widgets tutorials
+-----------------
+
+The :code:`widgets` module contains several plotting routines (widgets) for visualizing recordings, sorting data, probe layout, and more.
+
+.. grid:: 1 2 2 3
+ :gutter: 2
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_widgets_plot_1_rec_gallery.py
+ :img-top: /tutorials/widgets/images/thumb/sphx_glr_plot_1_rec_gallery_thumb.png
+ :img-alt: Recording Widgets
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ RecordingExtractor Widgets
+ Visualize recordings with widgets
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_widgets_plot_2_sort_gallery.py
+ :img-top: /tutorials/widgets/images/thumb/sphx_glr_plot_2_sort_gallery_thumb.png
+ :img-alt: Sorting Widgets
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ SortingExtractor Widgets
+ Explore sorting data using widgets
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_widgets_plot_3_waveforms_gallery.py
+ :img-top: /tutorials/widgets/images/thumb/sphx_glr_plot_3_waveforms_gallery_thumb.png
+ :img-alt: Waveforms Widgets
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Waveforms Widgets
+ Display waveforms using SpikeInterface
+
+ .. grid-item-card::
+ :link-type: ref
+ :link: sphx_glr_tutorials_widgets_plot_4_peaks_gallery.py
+ :img-top: /tutorials/widgets/images/thumb/sphx_glr_plot_4_peaks_gallery_thumb.png
+ :img-alt: Peaks Widgets
+ :class-card: my-custom-card
+
+ .. raw:: html
+
+ Peaks Widgets
+ Visualize detected peaks
+
+Download All Examples
+---------------------
+
+- :download:`Download all examples in Python source code `
+- :download:`Download all examples in Jupyter notebooks `