Song Writer AI is a Vue.js application that leverages AI (specifically Ollama with llama3.1:latest model) to generate song drafts based on user input. This project aims to streamline the creative process for songwriters by providing AI-generated ideas and variations.
- User input for song ideas
- Variable number of draft generation (1-9, default 3)
- AI-generated song drafts including title, style, and lyrics
- Progress indicator for draft generation
- Error handling and display
- Logging of inputs and AI responses
- Frontend: Vue.js with Tailwind CSS
- Backend: Node.js with Express.js
- AI Integration: Ollama (local setup)
- API Communication: Axios
- Cross-Origin Resource Sharing: CORS middleware
Before you begin, ensure you have the following installed:
- Node.js (v14 or later)
- npm (usually comes with Node.js)
- Git
- Ollama (with llama3.1:latest model)
-
Clone the repository:
git clone https://github.com/ryan258/song-writer-ai.git cd song-writer-ai -
Install dependencies for both frontend and backend:
cd frontend npm install cd ../backend npm install -
Set up environment variables: Create a
.envfile in thebackenddirectory with the following content:PORT=3000 API_URL=http://localhost:11434/api/generate MODEL_NAME=llama3.1:latest
-
Start the backend server:
cd backend npm run dev -
In a new terminal, start the frontend development server:
cd frontend npm run serve -
Open your browser and navigate to
http://localhost:8080to use the application.
To run the backend tests:
cd backend
npm test
For integration tests:
cd backend
npm run test:integration
- Set up basic Vue.js frontend
- Implement Tailwind CSS for styling
- Create backend Express.js server
- Integrate Ollama AI service
- Implement song draft generation API
- Add error handling and display
- Create progress indicator for draft generation
- Implement logging functionality
- Add user authentication
- Implement draft saving and retrieval
- Create mobile-responsive design
- Add option for different AI models
- Implement collaborative songwriting features
- Add export options (PDF, MIDI, etc.)
- Integrate with music production software
- Implement multi-language support