A full-stack investing workspace for exploring live markets, simulating trades, managing portfolios, and getting AI-powered investment insights.
No installation required. A demo account is available directly from the login page.
Stockify is a full-stack stock market management and paper-trading platform that brings market data, portfolio management, simulated trading, and AI-powered research into one focused investing workspace.
Rather than being a simple stock-price dashboard or CRUD portfolio tracker, Stockify provides an end-to-end simulated investing experience.
Users can:
- π Explore live stock market data
- π΅ Buy and sell stocks using virtual funds
- πΌ Build and track a persistent portfolio
- π Monitor profit, loss, holdings, and valuation
- β Maintain personalized watchlists
- π Review complete transaction history
- π Receive persistent account notifications
- π€ Ask an AI investment research assistant
- π§ Analyze portfolio diversification and risk with AI
The application is fully deployed with a React/Vite frontend on Vercel, a Node.js/Express API on Render, and persistent data stored in MongoDB Atlas.
Stockify is a paper-trading and educational application. No real money or securities are involved.
Stockify is deployed and can be used directly without cloning or installing the project.
A Demo Login is available on the authentication page, allowing visitors to explore the platform without creating a new account.
| Service | Deployment |
|---|---|
| Frontend | Vercel |
| Backend API | Render |
| Database | MongoDB Atlas |
| Market Data | Finnhub |
| AI | Google Gemini |
Stockify implements a complete authentication system rather than relying on mocked frontend users.
- JWT-based authentication
- bcrypt password hashing
- User registration
- Email or username login
- Demo account
- Protected API routes
- Persistent sessions
- User profile management
- Password updates
- Virtual wallet management
Every new account receives virtual funds that can be used for paper trading.
Stockify integrates with Finnhub to retrieve real financial market data.
Users can:
- Search publicly traded companies
- View live stock quotes
- Explore market movers
- Track daily price changes
- View company information
- Inspect individual stock pages
- Monitor gains and losses
- Add stocks directly to a watchlist
Market information is presented through a focused interface designed to avoid the clutter of traditional trading dashboards.
Stockify includes a simulated trading system backed by persistent portfolio and transaction data.
Users can:
- Buy stocks using virtual funds
- Sell existing positions
- Select quantities
- Track execution prices
- Monitor remaining wallet balance
- Persist every transaction
- Automatically update portfolio holdings
This allows the application to simulate a simplified brokerage workflow without involving real financial transactions.
Trades automatically update the user's portfolio.
The portfolio dashboard provides information such as:
- Current holdings
- Number of shares owned
- Average purchase price
- Total investment
- Current position value
- Profit and loss
- Portfolio valuation
- Available cash
- Portfolio performance
Portfolio information is stored persistently in MongoDB rather than existing only in frontend state.
Users can create a personalized collection of stocks they want to monitor.
Features include:
- Add stocks to watchlist
- Remove stocks
- Persistent watchlist storage
- Live price information
- Quick access to stock details
Stockify includes an AI-powered research assistant built using Google Gemini.
Instead of functioning as a generic chatbot, the assistant is designed around investing and financial education.
Users can ask questions such as:
"What does P/E ratio mean?"
"What are the risks of concentrating my portfolio in technology?"
"How does diversification reduce risk?"
"Compare these companies."
"What should I look at before researching a stock?"
The assistant provides contextual explanations and helps users understand market and portfolio concepts.
The AI Portfolio Analyzer works with the user's actual Stockify portfolio rather than requiring them to manually describe their holdings.
It evaluates factors such as:
- Portfolio Health
- Diversification
- Cash Utilization
- Concentration Risk
- Overall Risk
- Portfolio Strengths
- Portfolio Weaknesses
- Potential Areas for Improvement
The portfolio data is transformed into structured context and analyzed using Google Gemini.
AI-generated output is intended for educational purposes and should not be interpreted as professional financial advice.
Stockify maintains persistent notifications for important account activity.
Notifications can be generated for events such as:
- Stock purchases
- Stock sales
- Wallet deposits
- Account activity
Notifications are stored in MongoDB and remain available between sessions.
Every simulated trade creates a transaction record.
Users can review:
- BUY / SELL operation
- Stock symbol
- Company name
- Quantity
- Execution price
- Total transaction value
- Transaction timestamp
This creates a persistent audit trail of portfolio activity.
| Technology | Purpose |
|---|---|
| React | Component-based frontend |
| TypeScript | Type-safe application development |
| Vite | Development and production build tooling |
| React Router | Client-side routing |
| Tailwind CSS | Styling |
| Recharts | Financial data visualization |
| Lucide React | Interface icons |
| Sonner | Toast notifications |
| Technology | Purpose |
|---|---|
| Node.js | JavaScript runtime |
| Express.js | REST API server |
| TypeScript | Type-safe backend development |
| MongoDB | Persistent application database |
| Mongoose | MongoDB ODM and schema modelling |
| JWT | Authentication |
| bcrypt | Password hashing |
| Service | Purpose |
|---|---|
| Finnhub API | Live stock market data |
| Google Gemini | AI assistant and portfolio analysis |
| MongoDB Atlas | Managed cloud database |
| Render | Backend hosting |
| Vercel | Frontend hosting |
User
β
βΌ
ββββββββββββββββββββββ
β React + Vite β
β Vercel β
βββββββββββ¬βββββββββββ
β
REST / JSON
β
JWT Bearer Auth
β
βΌ
ββββββββββββββββββββββ
β Node.js + Express β
β Render β
βββββββββββ¬βββββββββββ
β
βββββββββββββββββΌββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β MongoDB β β Finnhub β β Gemini β
β Atlas β β API β β AI β
βββββββββββββββ βββββββββββββββ βββββββββββββββ
β β β
βΌ βΌ βΌ
Users, Trades, Live Market AI Research &
Portfolios & Data Portfolio Analysis
Notifications
Authentication
β
βΌ
Dashboard
β
ββββββββββββββββββββββΌββββββββββββββββββββββ
β β β
βΌ βΌ βΌ
Markets Portfolio AI Tools
β β β
βΌ β ββββββββ΄βββββββ
Stock Details β β β
β β β βΌ βΌ
β β β AI Assistant Portfolio
BUY SELL β Analyzer
β β β
ββββ¬ββββ β
βΌ β
Transaction ββββββββββββββ
β
βββββ Update Portfolio
βββββ Update Wallet
βββββ Create Notification
The backend is organized into domain-specific REST endpoints.
/api/auth
/api/portfolio
/api/transactions
/api/watchlist
/api/notifications
/api/market
/api/ai
Protected endpoints require an authentication token:
Authorization: Bearer <JWT_TOKEN>POST /api/auth/register
POST /api/auth/login
GET /api/auth/me
PATCH /api/auth/profile
PATCH /api/auth/password
PATCH /api/auth/wallet/deposit
The remaining routes handle portfolio operations, transactions, watchlists, notifications, market information, and AI functionality.
Stockify/
β
βββ client/
β βββ src/
β β βββ app/
β β β βββ components/
β β β βββ context/
β β β βββ hooks/
β β β βββ lib/
β β β βββ pages/
β β β βββ ...
β β β
β β βββ styles/
β β
β βββ package.json
β βββ vite.config.ts
β
βββ server/
β βββ src/
β β βββ config/
β β βββ controllers/
β β βββ middleware/
β β βββ models/
β β βββ routes/
β β βββ services/
β β βββ utils/
β β
β βββ server.ts
β βββ package.json
β βββ tsconfig.json
β
βββ .gitignore
βββ README.md
Stockify implements several security practices across the application:
- Passwords hashed using bcrypt
- JWT-based authentication
- Protected backend routes
- Authorization headers for authenticated requests
- Environment-based secret management
- Server-side request validation
- MongoDB authentication
- Production CORS configuration
- Separation between frontend and backend credentials
API keys, JWT secrets, and database credentials are never intended to be committed to the repository.
You do not need to run Stockify locally to use it.
The complete application is available at stockify-sm.vercel.app.
The following instructions are only for developers interested in running or modifying the source code.
git clone https://github.com/Kaniska1/Stockify.git
cd Stockifycd server
npm installCreate server/.env:
PORT=5000
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
GEMINI_API_KEY=your_gemini_api_key
GEMINI_MODEL=your_gemini_model
FINNHUB_API_KEY=your_finnhub_api_keyStart the backend:
npm run devOpen another terminal:
cd client
npm installOptionally create client/.env:
VITE_API_URL=http://localhost:5000Start the frontend:
npm run devVite will display the local development URL in the terminal.
Stockify uses separate deployments for the frontend and backend.
GitHub
β
ββββββββββββββββΊ Vercel
β β
β βββ React/Vite Frontend
β
ββββββββββββββββΊ Render
β
βββ Node/Express API
β
βΌ
MongoDB Atlas
Production environment variables are configured independently on the relevant hosting platforms.
Application
https://stockify-sm.vercel.app/
API
https://stockify-api-xsuy.onrender.com/
Stockify was built as more than a frontend stock dashboard.
It demonstrates practical experience with:
- Full-stack TypeScript development
- REST API design
- Authentication and authorization
- MongoDB schema modelling
- Persistent application state
- Financial transaction workflows
- Third-party API integration
- AI integration with application context
- Portfolio calculation logic
- Protected frontend and backend routes
- Responsive dashboard design
- Production environment configuration
- Separate frontend/backend deployments
- Debugging differences between Windows development and Linux production environments
Potential future improvements include:
- π Advanced TradingView-style charts
- π° Live financial news
- π Custom stock price alerts
- π Advanced stock screener
- π Exportable portfolio reports
- π Historical portfolio performance charts
- π§ Deeper AI stock research
- π Sector and asset-allocation visualization
- β‘ Market-data caching
- π Real-time updates using WebSockets/SSE
- π§ͺ Automated API and frontend testing
- π Route-level code splitting and bundle optimization
- π± Progressive Web App support
- π Multi-currency portfolio support
Stockify is an educational and portfolio project.
The platform performs simulated trades using virtual funds and does not execute real securities transactions.
Market information and AI-generated responses are provided for demonstration and educational purposes only. They should not be considered financial, investment, legal, or tax advice.
Contributions, suggestions, and bug reports are welcome.
If you'd like to contribute:
- Fork the repository
- Create a feature branch
- Make your changes
- Commit your work
- Open a pull request
This project is licensed under the MIT License.





