33 | Manage and access your December projects. 34 |
35 |23 | Your crypto trading interface will be rendered here 24 |
25 |• Real-time market data
27 |• Interactive trading charts
28 |• Portfolio management
29 |• Price alerts & notifications
30 |66 | Get started instantly with popular frameworks and tools. 67 |
68 |125 | {parts.map((part, i) => 126 | i % 2 === 1 ? {part} : part 127 | )} 128 |
129 | ); 130 | } 131 | return line ? ( 132 |133 | {line} 134 |
135 | ) : ( 136 |94 | Discover amazing projects built by the December community. Get 95 | inspired, fork, and build upon the work of others. 96 |
97 |134 | {project.description} 135 |
136 |
8 | December is an open-source alternative to AI-powered development platforms like Loveable, Replit, and Bolt that you can run locally with your own API keys, ensuring complete privacy and significant cost savings.
9 |
10 |
11 | December lets you build full-stack applications from simple text prompts using AI.
12 |
13 |
14 | Get started
15 | ·
16 | Report Bug
17 | ·
18 | Request Feature
19 |
20 |
24 |
25 |
26 | ## Features
27 |
28 | ✅ AI-powered project creation from natural language prompts
29 | ✅ Containerized Next.js applications with Docker
30 | ✅ Live preview with mobile and desktop views
31 | ✅ Full-featured Monaco code editor with file management
32 | ✅ Real-time chat assistant for development help
33 | ✅ Project export and deployment capabilities
34 |
35 | ## Roadmap
36 |
37 | 🔄 LLM streaming support
38 | 🔄 Document & image attachments
39 | 🔄 Improved fault tolerance
40 | 🔄 Comprehensive test coverage
41 | 🔄 Multi-framework support (beyond Next.js)
42 |
43 | ## Get started
44 |
45 | 1. Clone the repo
46 |
47 | ```sh
48 | git clone https://github.com/ntegrals/december
49 | ```
50 |
51 | 2. Get an API Key from any OpenAI sdk compatible provider (e.g. OpenAI, Claude, Ollama, OpenRouter, etc.) and set it in the `config.ts` file.
52 |
53 | The start.sh script will automatically copy over the file into the backend folder.
54 |
55 | I highly recommend using Sonnet-4 from Anthropic as it is the best coding model available right now.
56 |
57 | ```sh
58 | baseUrl: "https://openrouter.ai/api/v1",
59 |
60 | apiKey:
61 | "sk-...",
62 |
63 | model: "anthropic/claude-sonnet-4",
64 | temperature: 0.7,
65 | ```
66 |
67 | 3. Install docker (Docker Desktop is the easiest way to get started)
68 |
69 | - [Docker Desktop for Mac](https://www.docker.com/products/docker-desktop/)
70 | - [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop/)
71 | - [Docker Engine for Linux](https://docs.docker.com/engine/install/)
72 |
73 | Make sure you have Docker running and the Docker CLI installed before proceeding.
74 |
75 | 4. Run the start script to set up the environment
76 |
77 | ```sh
78 | sh start.sh
79 | ```
80 |
81 | 5. The application will start in development mode, and you can access it at [http://localhost:3000](http://localhost:3000).
82 |
83 | The backend will run on port 4000, and the frontend will run on port 3000.
84 |
85 | You can now start building your applications with December! 🥳
86 |
87 |
90 |
91 | ## Motivation
92 |
93 | AI-powered development platforms have revolutionized how we build applications. They allow developers to go from idea to working application in seconds, but most solutions are closed-source or require expensive subscriptions.
94 |
95 | Until recently, building a local alternative that matched the speed and capabilities of platforms like Loveable, Replit, or Bolt seemed challenging. The recent advances in AI and containerization technologies have made it possible to build a fast, local development environment that gives you full control over your code and API usage.
96 |
97 | I would love for this repo to become the go-to place for people who want to run their own AI-powered development environment. I've been working on this project for a while now and I'm really excited to share it with you.
98 |
99 | ## Why run December locally?
100 |
101 | Building applications shouldn't require expensive subscriptions or sacrificing your privacy. December gives you the power of platforms like Loveable, Replit, and Bolt without the downsides:
102 |
103 | - **Full Control & Privacy** - Your code, ideas, and projects never leave your machine. No cloud storage, no data mining, no vendor lock-in
104 | - **Your API Keys, Your Costs** - Use your own OpenAI API key and pay only for what you use. No monthly subscriptions or usage limits imposed by third parties
105 | - **Complete Feature Access** - No paywalls, premium tiers, or artificial limitations. Every feature is available from day one
106 |
107 | Most cloud-based AI development platforms charge $20-100+ per month while limiting your usage and storing your intellectual property on their servers. With December, a $5 OpenAI API credit can generate dozens of complete applications, and you keep full ownership of everything you create.
108 |
109 | The local-first approach means you can work offline, modify the platform itself, and never worry about service outages or policy changes affecting your projects. Your development environment evolves with your needs, not a company's business model.
110 |
111 | December proves that you don't need to choose between powerful AI assistance and maintaining control over your work. Run it locally, use your own API keys, and build without boundaries.
112 |
113 | ## Contact
114 |
115 | Hi! Thanks for checking out and using this project. If you are interested in discussing your project, require mentorship, consider hiring me, or just wanna chat - I'm happy to talk.
116 |
117 | You can send me an email to get in touch: j.schoen@mail.com or message me on Twitter: [@julianschoen](https://twitter.com/julianschoen)
118 |
119 | Thanks and have an awesome day 👋
120 |
121 | ## Disclaimer
122 |
123 | December, is an experimental application and is provided "as-is" without any warranty, express or implied. By using this software, you agree to assume all risks associated with its use, including but not limited to data loss, system failure, or any other issues that may arise.
124 |
125 | The developers and contributors of this project do not accept any responsibility or liability for any losses, damages, or other consequences that may occur as a result of using this software. You are solely responsible for any decisions and actions taken based on the information provided by December.
126 |
127 | Please note that the use of the large language models can be expensive due to its token usage. By utilizing this project, you acknowledge that you are responsible for monitoring and managing your own token usage and the associated costs. It is highly recommended to check your API usage regularly and set up any necessary limits or alerts to prevent unexpected charges.
128 |
129 | By using December, you agree to indemnify, defend, and hold harmless the developers, contributors, and any affiliated parties from and against any and all claims, damages, losses, liabilities, costs, and expenses (including reasonable attorneys' fees) arising from your use of this software or your violation of these terms.
130 |
131 |
132 |
133 | ## License
134 |
135 | Distributed under the MIT License. See `LICENSE` for more information.
136 |
--------------------------------------------------------------------------------
/backend/src/services/llm.ts:
--------------------------------------------------------------------------------
1 | import OpenAI from "openai";
2 | import { config } from "../../config";
3 | import prompt from "../utils/prompt.txt";
4 | import * as dockerService from "./docker";
5 | import * as fileService from "./file";
6 |
7 | const openai = new OpenAI({
8 | apiKey: config.aiSdk.apiKey,
9 | baseURL: config.aiSdk.baseUrl || "https://api.openai.com/v1",
10 | });
11 |
12 | export interface Message {
13 | id: string;
14 | role: "user" | "assistant";
15 | content: string;
16 | timestamp: string;
17 | attachments?: Attachment[];
18 | }
19 |
20 | export interface Attachment {
21 | type: "image" | "document";
22 | data: string;
23 | name: string;
24 | mimeType: string;
25 | size: number;
26 | }
27 |
28 | export interface ChatSession {
29 | id: string;
30 | containerId: string;
31 | messages: Message[];
32 | createdAt: string;
33 | updatedAt: string;
34 | }
35 |
36 | const chatSessions = new Map105 | Start the container to see the live preview 106 |
107 |
81 |
86 | 122 | Next.js Application 123 |
124 |126 | Created {formatDate(container.created)} 127 |
128 |
170 | Open
171 |
172 | )}
173 | 196 | This action cannot be undone. All project data will be permanently 197 | removed. 198 |
199 |152 | Use the prompt above to create your first project with AI 153 | assistance. 154 |
155 | 161 |