A full-stack React and Node.js application that automatically creates interactive learning cards from uploaded content. Perfect for leadership, management, and educational content.

- File Upload & Processing: Support for PDF, DOCX, TXT, MD, JSON, XLSX, and image files
- Automatic Card Generation: AI-powered content analysis to create different card types
- Interactive Card Viewing: Full-screen modal with scrollable content for long text
- Smart Categorization: Automatic tagging and categorization based on content
- Search & Filter: Advanced search and filtering capabilities
- Collections: Organize cards into collections and decks
- Responsive Design: Modern UI with dark mode support
- Enhanced User Experience: Improved card viewing with no overlapping issues
- Concept Cards: Key ideas and definitions
- Action Cards: Step-by-step processes and procedures
- Quote Cards: Inspirational quotes and insights
- Checklist Cards: Task lists and requirements
- Mind Map Cards: Visual relationship cards
- Node.js with Express
- MongoDB with Mongoose
- JWT Authentication
- Multer for file uploads
- Natural for text processing
- PDF-parse and Mammoth for document processing
- React 18 with hooks
- Redux Toolkit for state management
- React Router for navigation
- Tailwind CSS for styling
- Framer Motion for animations
- React Dropzone for file uploads
- Lucide React for icons
- Node.js (v16 or higher)
- MongoDB (local or cloud)
- npm or yarn
- Docker (for MongoDB container)
# Start MongoDB with Docker
docker run -d --name mongodb -p 27017:27017 mongo:latest-
Clone the repository
git clone https://github.com/tataravi/card-creator-app.git cd card-creator-app -
Install dependencies
# Install root dependencies npm install # Install backend dependencies cd server && npm install # Install frontend dependencies cd ../client && npm install
-
Environment Setup
Create a
.envfile in theserverdirectory:PORT=5001 MONGODB_URI=mongodb://localhost:27017/card-creator-app JWT_SECRET=your-secret-key-here-make-this-secure-in-production NODE_ENV=development CLIENT_URL=http://localhost:3000
-
Start the application
# From the root directory npm run devThis will start both the backend server (port 5001) and frontend (port 3000).
You can also run the servers separately:
# Terminal 1 - Backend
cd server
npm run dev
# Terminal 2 - Frontend
cd client
npm startcard-creator-app/
├── server/ # Backend Node.js application
│ ├── models/ # MongoDB schemas
│ ├── routes/ # API routes
│ ├── middleware/ # Express middleware
│ ├── utils/ # Utility functions
│ └── uploads/ # Uploaded files storage
├── client/ # Frontend React application
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── store/ # Redux store
│ │ ├── utils/ # Utility functions
│ │ └── styles/ # CSS and styling
│ └── public/ # Static assets
├── package.json # Root package.json
└── README.md # This file
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/me- Get current user
GET /api/cards- Get all cards (with filters)POST /api/cards- Create a new cardPUT /api/cards/:id- Update a cardDELETE /api/cards/:id- Delete a cardPATCH /api/cards/:id/review- Mark card as reviewedPATCH /api/cards/:id/rate- Rate a card
POST /api/upload- Upload and process a single filePOST /api/upload/multiple- Upload multiple files
GET /api/collections- Get all collectionsPOST /api/collections- Create a collectionPUT /api/collections/:id- Update a collectionDELETE /api/collections/:id- Delete a collection
- Navigate to the Upload page
- Drag and drop files or click to select
- Supported formats: PDF, DOCX, TXT, MD, JSON, XLSX, images
- Files are automatically processed and cards are generated
- Review and edit generated cards as needed
- View Cards: Browse all cards with search and filter options
- Full Card View: Click any card to open a full-screen modal with complete content
- Scrollable Content: Long content is displayed in scrollable areas for better readability
- Edit Cards: Click the edit button to modify card content
- Rate Cards: Use the star rating system to rate cards
- Review Cards: Mark cards as reviewed to track progress
- Delete Cards: Remove unwanted cards
- Group related cards into collections
- Share collections with others
- Export collections for offline use
The app uses natural language processing to:
- Extract Text: Parse various file formats
- Analyze Content: Identify key concepts and patterns
- Categorize: Determine card type and category
- Generate Tags: Extract relevant keywords
- Create Cards: Generate structured card content
- Update the
CARD_TYPE_KEYWORDSinserver/utils/contentProcessor.js - Add corresponding icons in
client/src/components/Card.js - Update the card type colors and styling
- Add new file type handlers in
server/utils/contentProcessor.js - Update the file filter in
server/routes/upload.js - Add corresponding MIME types and extensions
- Set up environment variables for production
- Configure MongoDB connection
- Set up file storage (consider cloud storage for production)
- Deploy to your preferred platform (Heroku, AWS, etc.)
- Build the production version:
npm run build - Deploy the
buildfolder to your hosting service - Update the API base URL for production
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with React and Node.js
- Uses MongoDB for data storage
- Styled with Tailwind CSS
- Icons by Lucide React
If you have any questions or need help, please:
- Open an issue
- Check our documentation
- Contact the maintainers
⭐ Star this repository if you found it helpful!
For support and questions, please open an issue on GitHub or contact the development team.
- Full-Screen Modal: Click any card to view complete content in a beautiful modal
- Scrollable Content: Long text content is displayed in dedicated scrollable areas
- No Overlapping Issues: Fixed previous card overlapping problems
- Better Image Handling: Improved image display with dedicated scrolling for multiple images
- Responsive Design: Works perfectly on all screen sizes
- Visual Indicators: Clear hints when content is scrollable
- Improved Modal Structure: Fixed header with scrollable content area
- Better Performance: Optimized rendering and scrolling
- Enhanced UX: Smooth interactions and clear visual feedback
- Mobile-Friendly: Touch-friendly scrolling and responsive layout
- AI-powered content summarization
- Spaced repetition learning system
- Collaborative features
- Mobile app
- Advanced analytics
- Export to various formats
- Integration with external learning platforms