Citenet is a web-based tool that visualizes the interconnections between research papers through their citation networks. Using a tree-like structure, it enables researchers to trace foundational works, discover new ideas, and identify research gaps by exploring cited and citing papers interactively. Built with Django, PostgreSQL, and D3.js, Citenet integrates the Semantic Scholar API to fetch paper data and provides features like dynamic search, responsive graphs, user authentication, and graph history management.
- Dynamic Search: Search for papers with real-time suggestions powered by the Semantic Scholar API.
- Interactive Visualization: Generate responsive, tree-like citation graphs using D3.js, with node highlighting and tooltip-based title copying.
- User Authentication: Sign in, sign out, and reset passwords via email (using SMTP2GO).
- Graph Management: Save generated graphs, view them in a history section, and delete as needed.
- Admin Panel: Manage users through Django’s built-in admin interface.
- Responsive Design: Adapts to various screen sizes for accessibility.
- Testing: Backend and API endpoints tested with Postman.
- Backend: Django
- Database: PostgreSQL (SQLite used in development, as per
db.sqlite3) - Frontend Visualization: D3.js
- API: Semantic Scholar API (accessed via Axios with rate limiting)
- Mailing Service: SMTP2GO
- Deployment: Render platform
- Static Files: CSS (
main.css) and JavaScript (search_suggestion.js)
raviteja-112-citenet/
└── citeNet/
├── db.sqlite3 # SQLite database (development)
├── manage.py # Django management script
├── accounts/ # Authentication app
│ ├── forms.py # User forms (login, registration)
│ ├── models.py # User-related models
│ ├── urls.py # Authentication URLs
│ ├── views.py # Authentication views
│ ├── migrations/ # Database migrations
│ └── ...
├── citeNet/ # Project settings
│ ├── settings.py # Django configuration
│ ├── urls.py # Project-wide URL routing
│ ├── wsgi.py # WSGI entry point
│ └── ...
├── core/ # Main application logic
│ ├── models.py # Graph and history models
│ ├── urls.py # Core URLs (search, graph, history)
│ ├── views.py # Core views
│ ├── migrations/ # Database migrations
│ └── ...
├── static/ # Static assets
│ ├── css/
│ │ └── main.css # Styling
│ └── js/
│ └── search_suggestion.js # Search suggestion logic
└── templates/ # HTML templates
├── layout.html # Base template
├── accounts/ # Authentication templates
│ ├── login.html
│ ├── register.html
│ ├── password_reset.html
│ └── ...
├── core/ # Core templates
│ ├── search_suggestions.html
│ ├── tree.html
│ ├── history.html
│ └── ...
├── partials/ # Reusable components
│ ├── navbar.html
│ └── sidebar.html
└── registration/ # Password reset email templates
- Python 3.8+
- PostgreSQL (for production; SQLite used in development)
- A Semantic Scholar API key or you can use public endpoints
- An SMTP2GO account for email services
-
Clone the Repository
git clone https://github.com/raviteja-112/CiteNet.git cd raviteja-112-citenet/citeNet -
Set Up a Virtual Environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install Dependencies
pip install -r requirements.txt
Note: If
requirements.txtis not included, install Django and other dependencies manually:pip install django psycopg2-binary requests
-
Configure Environment Variables
Create a.envfile in theciteNet/directory and add:SECRET_KEY=your_django_secret_key DEBUG=True SEMANTIC_SCHOLAR_API_KEY=your_api_key SMTP2GO_API_KEY=your_smtp2go_key DATABASE_URL=sqlite:///db.sqlite3 # Replace with PostgreSQL URL for production -
Run Migrations
python manage.py makemigrations python manage.py migrate
-
Collect Static Files
python manage.py collectstatic
-
Create a Superuser (for Admin Panel)
python manage.py createsuperuser
-
Run the Development Server
python manage.py runserver
Access the app at
http://localhost:8000.
- Sign Up or Log In: Create an account or log in to access Citenet’s features.
- Search for a Paper: Use the search bar to find a paper. Suggestions appear dynamically.
- Generate a Citation Graph: Select a paper to visualize its citation network as an interactive tree.
- Interact with the Graph: Highlight nodes, copy titles via tooltips, or save the graph for later.
- View History: Check the history section to revisit or delete saved graphs.
- Admin Access: Visit
/adminwith superuser credentials to manage users.
To deploy on Render:
- Push the repository to GitHub.
- Create a new web service on Render, selecting the repository.
- Configure environment variables (as in
.env). - Set the build command:
pip install -r requirements.txt && python manage.py migrate. - Set the start command:
gunicorn citeNet.wsgi:application.
- Backend and API: Use Postman to test endpoints (e.g., search, graph generation).
- Frontend: Manually verify graph rendering, responsiveness, and tooltip functionality.
- Authentication: Test login, registration, and password reset flows.
Contributions are welcome! To contribute:
- Fork the repository.
- Create a feature branch (
git checkout -b feature-name). - Commit changes (
git commit -m "Add feature"). - Push to the branch (
git push origin feature-name). - Open a pull request.
We welcome contributions from the community! If you are interested in becoming a maintainer or have questions about contributing, please reach out.
If you are not able to host it, we have a website: https://citenet-k8ne.onrender.com/