Pubsly is a web-based application designed to help research groups and collaborations easily track, manage, and showcase their scholarly output. It provides a centralized platform for team members to log new publications (papers, articles, preprints) and presentations (talks, posters).
This portal is proudly developed by the Advanced Scientific Computing and Statistics Network (ASCSN).
- Easy Data Entry: Add publications via DOI/arXiv ID parsing or manual forms. Log presentations with relevant details.
- Bulk Import: Import publications from ORCID profiles or BibTeX files (e.g., from Google Scholar).
- Comprehensive Data Management: Store detailed metadata, including abstracts, URLs, and citation counts (from Semantic Scholar).
- Tagging System: Organize publications with customizable tags for easy filtering and analysis.
- Data Visualization & Analytics: View summary statistics and charts (publications over time, citations by year). Filter analytics by tags.
- Efficient Browsing: Sortable lists of all entries, with tag-based filtering for publications.
- Bulk Operations: Delete multiple entries at once.
- Data Export & Backup: Export data in JSON (full backup), Plain Text, and BibTeX formats.
- Citation Management: Fetches citation counts from Semantic Scholar and allows manual refresh.
- User Authentication (Optional & Configurable):
- Supports Auth0 for secure login, distinguishing public read-only views from authenticated full-access.
- Can be disabled for full access without login.
- Auth0 credentials can be supplied via environment variables for deployment.
- Responsive Design: Accessible on desktops, tablets, and mobile phones.
- Comprehensive Documentation: Includes a full documentation site built with MkDocs.
- Frontend: React, TypeScript
- Styling: Tailwind CSS
- Charting: Chart.js
- Authentication: Auth0 (optional)
- Modules: Loaded via ES Modules (esm.sh)
- A modern web browser (Chrome, Firefox, Safari, Edge).
- No local build step is strictly required to run the application as-is, as dependencies are loaded via CDN and ES Modules.
- To build the documentation, you'll need Python, pip, and MkDocs (see Documentation section).
-
Clone the repository (if applicable):
git clone https://github.com/ascsn/pubsly.git cd pubsly
-
Configure the Portal:
- Open the
config.ts
file in the root directory. - Application Name: Modify
appName
to your desired portal name. - Default Tags: Customize
defaultTags
for publication suggestions. - Authentication (Important):
- Decide if you want to use authentication. Set
enableAuth
inconfig.ts
totrue
orfalse
. - If
enableAuth
istrue
:- You must create a Single Page Application in Auth0.
- Supplying Auth0 Credentials:
- For Deployment (e.g., Netlify, Vercel - Recommended):
- Define environment variables in your deployment platform's settings (e.g.,
AUTH0_DOMAIN
,AUTH0_CLIENT_ID
). - These variables need to be injected into the
window.__APP_CONFIG__
object inindex.html
during the build/deployment process. Theindex.html
file includes a<script>
block showing where these would be set. Many platforms offer ways to replace placeholders in HTML files with environment variables (e.g., Netlify's snippet injection or using build scripts to modifyindex.html
). - The application will prioritize these environment-injected values.
- Define environment variables in your deployment platform's settings (e.g.,
- For Local Development (Fallback):
- If environment variables are not injected (common for local development), the application will fall back to using the
auth0Domain
andauth0ClientId
values directly fromconfig.ts
. - Replace the placeholder values for
auth0Domain
andauth0ClientId
inconfig.ts
with your actual Auth0 application credentials for local testing if you don't set up local environment variable injection.
- If environment variables are not injected (common for local development), the application will fall back to using the
- For Deployment (e.g., Netlify, Vercel - Recommended):
- In your Auth0 Application settings, configure:
- Allowed Callback URLs: Add
http://localhost:YOUR_PORT
(e.g.,http://localhost:8000
if serving locally) andYOUR_APP_DEPLOYMENT_URL
(e.g.,https://ascsn.github.io/pubsly/
). - Allowed Logout URLs: Add your local and deployed URLs.
- Allowed Web Origins: Add your local and deployed URLs.
- Allowed Callback URLs: Add
- If
enableAuth
isfalse
, users will have full access without login.
- Decide if you want to use authentication. Set
- Open the
- Ensure you have configured
config.ts
as described above. - Open the
index.html
file directly in your web browser.- Alternatively, you can serve the root directory using a simple HTTP server (e.g.,
python -m http.server
or VS Code Live Server) and navigate toindex.html
.
- Alternatively, you can serve the root directory using a simple HTTP server (e.g.,
Comprehensive documentation for using the portal and understanding its features is available in the docs/
directory.
To build and view the documentation locally as a website:
- Install MkDocs and a theme (e.g., Material for MkDocs):
pip install mkdocs mkdocs-material
- Navigate to the project's root directory (the one containing
mkdocs.yml
and thedocs/
folder). - Serve the documentation:
This will typically start a local server at
mkdocs serve
http://127.0.0.1:8000/
. Open this URL in your browser. - Build static documentation site:
This generates a
mkdocs build
site/
directory containing the HTML files, which you can deploy to any static web hosting service (e.g., GitHub Pages).
The mkdocs.yml
file in the project root configures the documentation site structure and theme.
Contributions are welcome! If you'd like to contribute, please fork the repository and submit a pull request.
This project is licensed under the GNU General Public License v3.0. See the LICENSE file or website for details.
Pubsly was developed by the Advanced Scientific Computing and Statistics Network (ASCSN).