Signal Companion is a comprehensive Single Page Application designed for "Signals and Systems" students. It offers full bilingual support (English/Persian) with dynamic layout switching (LTR/RTL) and a powerful Python backend for symbolic mathematical computations.
- Bilingual Support: Full English and Persian language support.
- Dynamic Layout: Automatic LTR/RTL layout switching based on language.
- Seamless Switching: Instant toggle between languages via the navbar.
- Signal Library: Interactive library of common signals with mathematical definitions and plots.
- Property Analyzer: Analyze system properties (Linearity, Causality, Stability, Memory, Time Invariance).
- Convolution Engine: Visualize convolution operations.
- Laplace Calculator: Compute Laplace transforms and visualize Pole-Zero plots.
- Inverse Laplace Calculator: Get step-by-step solutions for inverse Laplace transforms.
- LTI Analyzer: Analyze LTI systems (Frequency response, Step response, Impulse response, Stability).
- Frontend: React 18, Vite, React Bootstrap 5
- Visualization: Plotly.js
- Math Rendering: KaTeX
- Backend: Python FastAPI
- Computation: SymPy, NumPy, SciPy
- Node.js 16+
- Python 3.10+
The backend handles all mathematical calculations.
- Navigate to the backend directory:
cd backend - Create and activate a virtual environment (Recommended):
# Mac/Linux: python3 -m venv venv source venv/bin/activate # Windows: python -m venv venv venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Start the FastAPI server:
Server will start at
uvicorn main:app --reload
http://127.0.0.1:8000
- Open a new terminal in the project root.
- Install dependencies:
npm install
- Configure Environment Variables:
Create a
.envfile in the root directory and add:VITE_API_BASE_URL="[http://127.0.0.1:8000](http://127.0.0.1:8000)"
- Start the development server:
npm run dev
- Open
http://localhost:5173in your browser.
The backend exposes the following endpoints via FastAPI:
- Property Analyzer:
POST /api/v1/properties/analyze - Laplace Transform:
POST /api/v1/laplace/transform - Inverse Laplace:
POST /api/v1/laplace/inverse - Convolution:
POST /api/v1/convolution/calculate - LTI Analysis:
POST /api/v1/lti/analyze
SignalSystemWeb/ ├── backend/ # Python FastAPI Backend │ ├── api/v1/ # API Route Handlers │ ├── services/ # Math Engine (SymPy logic) │ └── models/ # Pydantic Schemas ├── src/ # React Frontend │ ├── components/ # UI Components & Modules │ ├── i18n/ # Translation Config │ └── App.jsx # Main Layout Logic └── public/locales/ # Translation JSON files (en/fa)
This project is designed for educational purposes.
Designed By Ramtin Neshatvar